최초 세팅
This commit is contained in:
374
src/main/resources/static/js/mobile/bootstrap-datetimepicker/bootstrap-datetimepicker.css
vendored
Normal file
374
src/main/resources/static/js/mobile/bootstrap-datetimepicker/bootstrap-datetimepicker.css
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
/*!
|
||||
* Datetimepicker for Bootstrap 3
|
||||
* version : 4.17.47
|
||||
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
||||
*/
|
||||
.bootstrap-datetimepicker-widget {
|
||||
list-style: none;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu {
|
||||
display: block;
|
||||
margin: 2px 0;
|
||||
padding: 4px;
|
||||
width: 19em;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||
width: 38em;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||
width: 38em;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||
width: 38em;
|
||||
}
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu:before,
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
top: -7px;
|
||||
left: 7px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid white;
|
||||
top: -6px;
|
||||
left: 8px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid white;
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {
|
||||
left: auto;
|
||||
right: 6px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {
|
||||
left: auto;
|
||||
right: 7px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .list-unstyled {
|
||||
margin: 0;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget a[data-action] {
|
||||
padding: 6px 0;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget a[data-action]:active {
|
||||
box-shadow: none;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .timepicker-hour,
|
||||
.bootstrap-datetimepicker-widget .timepicker-minute,
|
||||
.bootstrap-datetimepicker-widget .timepicker-second {
|
||||
width: 54px;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
margin: 0;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget button[data-action] {
|
||||
padding: 6px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Increment Hours";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Increment Minutes";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Decrement Hours";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Decrement Minutes";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Show Hours";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Show Minutes";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Toggle AM/PM";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Clear the picker";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Set the date to today";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .picker-switch {
|
||||
text-align: center;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .picker-switch::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Toggle Date and Time Screens";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .picker-switch td {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: auto;
|
||||
width: auto;
|
||||
line-height: inherit;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .picker-switch td span {
|
||||
line-height: 2.5;
|
||||
height: 2.5em;
|
||||
width: 100%;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td,
|
||||
.bootstrap-datetimepicker-widget table th {
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table th {
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table th.picker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table th.disabled,
|
||||
.bootstrap-datetimepicker-widget table th.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table th.prev::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Previous Month";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table th.next::after {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
content: "Next Month";
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table thead tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td {
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
width: 54px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.cw {
|
||||
font-size: .8em;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
color: #777777;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.day {
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.day:hover,
|
||||
.bootstrap-datetimepicker-widget table td.hour:hover,
|
||||
.bootstrap-datetimepicker-widget table td.minute:hover,
|
||||
.bootstrap-datetimepicker-widget table td.second:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.old,
|
||||
.bootstrap-datetimepicker-widget table td.new {
|
||||
color: #777777;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.today {
|
||||
position: relative;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.today:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border: solid transparent;
|
||||
border-width: 0 0 7px 7px;
|
||||
border-bottom-color: #337ab7;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
bottom: 4px;
|
||||
right: 4px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.active,
|
||||
.bootstrap-datetimepicker-widget table td.active:hover {
|
||||
background-color: #337ab7;
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.active.today:before {
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td.disabled,
|
||||
.bootstrap-datetimepicker-widget table td.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td span {
|
||||
display: inline-block;
|
||||
width: 54px;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
margin: 2px 1.5px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td span.active {
|
||||
background-color: #337ab7;
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td span.old {
|
||||
color: #777777;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget table td span.disabled,
|
||||
.bootstrap-datetimepicker-widget table td span.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
|
||||
height: 27px;
|
||||
line-height: 27px;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget.wider {
|
||||
width: 21em;
|
||||
}
|
||||
.bootstrap-datetimepicker-widget .datepicker-decades .decade {
|
||||
line-height: 1.8em !important;
|
||||
}
|
||||
.input-group.date .input-group-addon {
|
||||
cursor: pointer;
|
||||
}
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
}
|
||||
2
src/main/resources/static/js/mobile/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js
vendored
Normal file
2
src/main/resources/static/js/mobile/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,69 @@
|
||||
//! moment.js locale configuration
|
||||
//! locale : Korean [ko]
|
||||
//! author : Kyungwook, Park : https://github.com/kyungw00k
|
||||
//! author : Jeeeyul Lee <jeeeyul@gmail.com>
|
||||
|
||||
;(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined'
|
||||
&& typeof require === 'function' ? factory(require('../moment')) :
|
||||
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
|
||||
factory(global.moment)
|
||||
}(this, (function (moment) { 'use strict';
|
||||
|
||||
|
||||
var ko = moment.defineLocale('ko', {
|
||||
months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
|
||||
monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
|
||||
weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
|
||||
weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
|
||||
weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
|
||||
longDateFormat : {
|
||||
LT : 'A h:mm',
|
||||
LTS : 'A h:mm:ss',
|
||||
L : 'YYYY.MM.DD',
|
||||
LL : 'YYYY년 MMMM D일',
|
||||
LLL : 'YYYY년 MMMM D일 A h:mm',
|
||||
LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
|
||||
l : 'YYYY.MM.DD',
|
||||
ll : 'YYYY년 MMMM D일',
|
||||
lll : 'YYYY년 MMMM D일 A h:mm',
|
||||
llll : 'YYYY년 MMMM D일 dddd A h:mm'
|
||||
},
|
||||
calendar : {
|
||||
sameDay : '오늘 LT',
|
||||
nextDay : '내일 LT',
|
||||
nextWeek : 'dddd LT',
|
||||
lastDay : '어제 LT',
|
||||
lastWeek : '지난주 dddd LT',
|
||||
sameElse : 'L'
|
||||
},
|
||||
relativeTime : {
|
||||
future : '%s 후',
|
||||
past : '%s 전',
|
||||
s : '몇 초',
|
||||
ss : '%d초',
|
||||
m : '1분',
|
||||
mm : '%d분',
|
||||
h : '한 시간',
|
||||
hh : '%d시간',
|
||||
d : '하루',
|
||||
dd : '%d일',
|
||||
M : '한 달',
|
||||
MM : '%d달',
|
||||
y : '일 년',
|
||||
yy : '%d년'
|
||||
},
|
||||
dayOfMonthOrdinalParse : /\d{1,2}일/,
|
||||
ordinal : '%d일',
|
||||
meridiemParse : /오전|오후/,
|
||||
isPM : function (token) {
|
||||
return token === '오후';
|
||||
},
|
||||
meridiem : function (hour, minute, isUpper) {
|
||||
return hour < 12 ? '오전' : '오후';
|
||||
}
|
||||
});
|
||||
|
||||
return ko;
|
||||
|
||||
})));
|
||||
2
src/main/resources/static/js/mobile/bootstrap-datetimepicker/moment-with-locales.min.js
vendored
Normal file
2
src/main/resources/static/js/mobile/bootstrap-datetimepicker/moment-with-locales.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
888
src/main/resources/static/js/mobile/common.js
Normal file
888
src/main/resources/static/js/mobile/common.js
Normal file
@@ -0,0 +1,888 @@
|
||||
/****************************************************************************
|
||||
* 로그아웃
|
||||
****************************************************************************/
|
||||
function fn_logout(){
|
||||
logout();
|
||||
window.location ='/mobilelogin/logout.do';
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 로그아웃(session 종료)
|
||||
****************************************************************************/
|
||||
function fn_sessionLogout(){
|
||||
if(checkMobile()){
|
||||
getLoginInfo();
|
||||
}
|
||||
else{
|
||||
window.location ='/weblogin/logout.do';
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 숫자 3자리 콤마 이벤트
|
||||
****************************************************************************/
|
||||
function fn_numberFormat(str) {
|
||||
str = String(str);
|
||||
return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_leftFormAction(action){
|
||||
let newForm = $("<form><form/>");
|
||||
newForm.attr("name","submitForm");
|
||||
newForm.attr("method","POST");
|
||||
|
||||
if(-1 != action.indexOf("?")) {
|
||||
let actionArr = action.split('?');
|
||||
newForm.attr("action",actionArr[0]);
|
||||
|
||||
let paramUrlArr = actionArr[1].split('&');
|
||||
for(let i = 0; i < paramUrlArr.length; i++){
|
||||
let paramArr = paramUrlArr[i].split('=');
|
||||
newForm.append($('<input/>',{type:'hidden',name:paramArr[0],value:paramArr[1]}));
|
||||
}
|
||||
}
|
||||
else {
|
||||
newForm.attr("action",action);
|
||||
}
|
||||
|
||||
// newForm.append($('<input/>',{type:'hidden',name:"menuCode",value:menuCode}));
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 이동2
|
||||
****************************************************************************/
|
||||
function fn_leftFormAction2(action){
|
||||
let newForm = $("<form><form/>");
|
||||
newForm.attr("name","submitForm");
|
||||
newForm.attr("method","POST");
|
||||
|
||||
if(-1 != action.indexOf("?")) {
|
||||
let actionArr = action.split('?');
|
||||
newForm.attr("action",actionArr[0]);
|
||||
|
||||
let paramUrlArr = actionArr[1].split('&');
|
||||
for(let i = 0; i < paramUrlArr.length; i++){
|
||||
let paramArr = paramUrlArr[i].split('=');
|
||||
newForm.append($('<input/>',{type:'hidden',name:paramArr[0],value:paramArr[1]}));
|
||||
}
|
||||
}
|
||||
else {
|
||||
newForm.attr("action",action);
|
||||
}
|
||||
|
||||
newForm.append($('<input/>',{type:'hidden'}));
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 탭 - 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_tapPageMove(referMenu, referTap, url){
|
||||
|
||||
let pagingParam = "&referMenu="+referMenu;
|
||||
pagingParam += "&referTap="+referTap;
|
||||
|
||||
location.href = url+pagingParam;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 탭 - 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_tapPageBack(referMenu, referTap){
|
||||
let url = "";
|
||||
|
||||
let pagingParam = "";
|
||||
pagingParam += "?referMenu="+referMenu;
|
||||
pagingParam += "&referTap="+referTap;
|
||||
|
||||
if("home" == referMenu){
|
||||
url = "/home";
|
||||
}else if("medical" == referMenu){
|
||||
url = "/medical";
|
||||
}else{
|
||||
url = "/home";
|
||||
}
|
||||
|
||||
location.href = url+pagingParam;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 새창 이동 (미리보기)
|
||||
****************************************************************************/
|
||||
function fn_openPopup(action){
|
||||
let newForm = $("<form><form/>");
|
||||
newForm.attr("name","submitForm");
|
||||
newForm.attr("method","POST");
|
||||
newForm.attr("target","_blank");
|
||||
|
||||
if(-1 != action.indexOf("?")) {
|
||||
let actionArr = action.split('?');
|
||||
newForm.attr("action",actionArr[0]);
|
||||
|
||||
let paramUrlArr = actionArr[1].split('&');
|
||||
for(let i = 0; i < paramUrlArr.length; i++){
|
||||
let paramArr = paramUrlArr[i].split('=');
|
||||
newForm.append($('<input/>',{type:'hidden',name:paramArr[0],value:paramArr[1]}));
|
||||
}
|
||||
}
|
||||
else {
|
||||
newForm.attr("action",action);
|
||||
}
|
||||
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 뒤로가기
|
||||
****************************************************************************/
|
||||
function fn_back(){
|
||||
history.back();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 새로고침
|
||||
****************************************************************************/
|
||||
function fn_reload(){
|
||||
location.reload();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 전화번호 형식 변경
|
||||
* type:0이면 중간번호 가리기
|
||||
****************************************************************************/
|
||||
function fn_setFormatPhone(num,type){
|
||||
let formatNum = '';
|
||||
|
||||
if(11 == num.length){
|
||||
if(0 == type){
|
||||
formatNum = num.replace(/(\d{3})(\d{4})(\d{4})/, '$1-****-$3');
|
||||
}
|
||||
else{
|
||||
formatNum = num.replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3');
|
||||
}
|
||||
}
|
||||
else if(8 == num.length){
|
||||
formatNum = num.replace(/(\d{4})(\d{4})/, '$1-$2');
|
||||
}
|
||||
else{
|
||||
if(0 == num.indexOf('02')){
|
||||
if(0 == type){
|
||||
formatNum = num.replace(/(\d{2})(\d{4})(\d{4})/, '$1-****-$3');
|
||||
}
|
||||
else{
|
||||
formatNum = num.replace(/(\d{2})(\d{4})(\d{4})/, '$1-$2-$3');
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(0 == type){
|
||||
formatNum = num.replace(/(\d{3})(\d{3})(\d{4})/, '$1-***-$3');
|
||||
}
|
||||
else{
|
||||
formatNum = num.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return formatNum;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 날짜 보이는 영역에 셋팅
|
||||
****************************************************************************/
|
||||
function fn_selectDateTime(paramId, paramValue){
|
||||
$("#"+paramId).val(paramValue);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* datePicker 생성
|
||||
****************************************************************************/
|
||||
function fn_datePicker(id){
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM-DD'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* datePicker
|
||||
****************************************************************************/
|
||||
function fn_searchDatePicker(startId, endId){
|
||||
$(startId).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM-DD',
|
||||
defaultDate: moment()
|
||||
});
|
||||
|
||||
$(endId).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
useCurrent: false, //Important! See issue #1075
|
||||
format: 'YYYY-MM-DD',
|
||||
defaultDate: moment()
|
||||
});
|
||||
|
||||
/*$(endId).data("DateTimePicker").minDate(fn_getToDate());*/
|
||||
|
||||
//$(endId).data("DateTimePicker").maxDate(fn_getToDate());
|
||||
//$(startId).data("DateTimePicker").maxDate(fn_getToDate());
|
||||
|
||||
$(startId).on("dp.change", function (e) {
|
||||
$(endId).data("DateTimePicker").minDate(e.date);
|
||||
|
||||
if($(endId).data("DateTimePicker").date() < e.date){
|
||||
$(endId).data("DateTimePicker").date(e.date);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* dateTimePicker 생성
|
||||
****************************************************************************/
|
||||
function fn_dateTimePicker1(id, value){
|
||||
if(value){
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'HH:mm',
|
||||
defaultDate: moment().format('YYYY-MM-DD')+'T'+ value
|
||||
});
|
||||
}
|
||||
else{
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'HH:mm'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* dateTimePicker 생성 (AM, PM 선택)
|
||||
****************************************************************************/
|
||||
function fn_dateTimePicker2(id){
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'LT'
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* dateTimePicker 생성
|
||||
****************************************************************************/
|
||||
function fn_dateTimePicker3(id){
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM-DD HH:mm'
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* dateTimePicker 생성 (AM, PM 선택)
|
||||
****************************************************************************/
|
||||
function fn_dateMonthPicker(id){
|
||||
$(id).datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM',
|
||||
defaultDate: moment().format('YYYY-MM')
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* null 확인
|
||||
****************************************************************************/
|
||||
function fn_emptyYn(value){
|
||||
if( value == "" || value == null || value == undefined || ( value != null && typeof value == "object" && !Object.keys(value).length ) ){
|
||||
return true
|
||||
}
|
||||
else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 오늘 날짜 조회
|
||||
****************************************************************************/
|
||||
function fn_getToDate() {
|
||||
let toDate = new Date();
|
||||
let newToDate = fn_formatToDate(toDate.getFullYear(), 4) + '-' + fn_formatToDate(toDate.getMonth() + 1, 2) + '-' + fn_formatToDate(toDate.getDate(), 2);
|
||||
|
||||
return newToDate;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 어제 날짜 조회
|
||||
****************************************************************************/
|
||||
function fn_getToYesterday() {
|
||||
let toDate = new Date();
|
||||
let newToDate = fn_formatToDate(toDate.getFullYear(), 4) + '-' + fn_formatToDate(toDate.getMonth() + 1, 2) + '-' + fn_formatToDate(toDate.getDate()-1, 2);
|
||||
|
||||
return newToDate;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 날짜 형식 맞추기
|
||||
****************************************************************************/
|
||||
function fn_formatToDate(day, number) {
|
||||
let temp = '';
|
||||
day = day.toString();
|
||||
|
||||
if (day.length < number) {
|
||||
for (i = 0; i < number - day.length; i++){
|
||||
temp += '0';
|
||||
}
|
||||
}
|
||||
|
||||
return temp + day;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 날짜 요일 조회
|
||||
****************************************************************************/
|
||||
function fn_getDayName(param){
|
||||
let paramArray = param.split('-');
|
||||
let week = new Array('일', '월', '화', '수', '목', '금', '토');
|
||||
let dt = new Date(parseInt(paramArray[0]), parseInt(paramArray[1])-1, parseInt(paramArray[2]));
|
||||
let dayName = week[dt.getDay()];
|
||||
|
||||
return dayName;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* 날짜 형식 변환
|
||||
* A: 년월일
|
||||
* B: 월일
|
||||
* C: 년월일 시간
|
||||
* D: 년.월.일
|
||||
* E: 년.월.일 (년도4자리)
|
||||
* F: 월/일(요일) (년도4자리)
|
||||
* G: 년.월.일(요일) (년도4자리)
|
||||
* H: YYMMDD (8자리)
|
||||
**************************************************************************/
|
||||
function setFormatDate(type, param) {
|
||||
let retureValue = param;
|
||||
|
||||
if("A" == type){
|
||||
let dateArray = param.split("-");
|
||||
retureValue = dateArray[0]+"년 "+dateArray[1]+"월 "+dateArray[2]+"일";
|
||||
}
|
||||
else if("B" == type){
|
||||
let dateArray = param.split("-");
|
||||
retureValue = dateArray[1]+"월 "+dateArray[2]+"일";
|
||||
}
|
||||
else if("C" == type){
|
||||
let tempArray = param.split(" ");
|
||||
let dateArray1 = tempArray[0].split("-");
|
||||
let dateArray2 = tempArray[1];
|
||||
|
||||
retureValue = dateArray1[0]+"년 "+dateArray1[1]+"월 "+dateArray1[2]+"일 "+dateArray2;
|
||||
}
|
||||
else if("D" == type){
|
||||
let dateArray = param.split("-");
|
||||
retureValue = dateArray[0].substring(2, 4)+"."+dateArray[1]+"."+dateArray[2];
|
||||
}
|
||||
else if("E" == type){
|
||||
let dateArray = param.split("-");
|
||||
retureValue = dateArray[0].substring(0, 4)+"."+dateArray[1]+"."+dateArray[2];
|
||||
}
|
||||
else if("F" == type){
|
||||
let dateArray = param.split("-");
|
||||
const week = ['일', '월', '화', '수', '목', '금', '토'];
|
||||
const dayOfWeek = week[new Date(dateArray[0], dateArray[1], dateArray[2]).getDay()];
|
||||
|
||||
retureValue = dateArray[1]+"/"+dateArray[2]+"("+dayOfWeek+")";
|
||||
}
|
||||
else if("G" == type){
|
||||
// 년.월.일(요일)
|
||||
let dateArray = param.split("-");
|
||||
const week = ['일', '월', '화', '수', '목', '금', '토'];
|
||||
const dayOfWeek = week[new Date(dateArray[0], dateArray[1], dateArray[2]).getDay()];
|
||||
|
||||
retureValue = dateArray[0].substring(0, 4)+"."+dateArray[1]+"."+dateArray[2]+"("+dayOfWeek+")";
|
||||
}
|
||||
else if("H" == type){
|
||||
let dateArray = param.split("-");
|
||||
retureValue = dateArray[0].substr(2, 4)+dateArray[1]+dateArray[2];
|
||||
}
|
||||
|
||||
return retureValue;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 빈값 체크
|
||||
****************************************************************************/
|
||||
function fn_emptyCheck(param){
|
||||
if(param === null || param === "" || param === "null" || param === "NULL" || param === undefined || param === "undefined"){
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 길이 체크
|
||||
****************************************************************************/
|
||||
function fn_lengthCheck(str, maxLength){
|
||||
let strLength = str.length;
|
||||
|
||||
if(strLength > maxLength){
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 날짜 체크
|
||||
****************************************************************************/
|
||||
function fn_dateCheck(value){
|
||||
let strLength = value.length;
|
||||
let cnt = 0;
|
||||
let searchChar = "-"; // 찾으려는 문자
|
||||
let pos = value.indexOf(searchChar); // pos는 0의 값을 가짐
|
||||
|
||||
if(10 == strLength){
|
||||
while(-1 !== pos){
|
||||
cnt++;
|
||||
pos = value.indexOf(searchChar, pos + 1) // 첫 번째 - 이후의 인덱스부터 -를 찾음
|
||||
}
|
||||
|
||||
if(2 == cnt){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
// let date = value.split("-");
|
||||
// let y = parseInt(date[0], 10),
|
||||
// m = parseInt(date[1], 10),
|
||||
// d = parseInt(date[2], 10);
|
||||
//
|
||||
// let dateRegex = /^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(?=.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]|1\d|0?[1-9]))([-.\/])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2-9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
|
||||
// if(dateRegex.test(d+'-'+m+'-'+y)){
|
||||
// return true;
|
||||
// }else{
|
||||
// return false;
|
||||
// }
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 날짜 시간 체크
|
||||
****************************************************************************/
|
||||
function fn_dateTimeCheck(value){
|
||||
let strLength = value.length;
|
||||
let cnt = 0;
|
||||
let searchChar = "-"; // 찾으려는 문자
|
||||
let pos = value.indexOf(searchChar); // pos는 0의 값을 가짐
|
||||
|
||||
if(10 == strLength){
|
||||
while(-1 !== pos){
|
||||
cnt++;
|
||||
pos = value.indexOf(searchChar, pos + 1) // 첫 번째 - 이후의 인덱스부터 -를 찾음
|
||||
}
|
||||
|
||||
if(2 == cnt){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
|
||||
// let date = value.split("-");
|
||||
// let y = parseInt(date[0], 10),
|
||||
// m = parseInt(date[1], 10),
|
||||
// d = parseInt(date[2], 10);
|
||||
//
|
||||
// let dateRegex = /^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(?=.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]|1\d|0?[1-9]))([-.\/])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2-9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
|
||||
// if(dateRegex.test(d+'-'+m+'-'+y)){
|
||||
// return true;
|
||||
// }else{
|
||||
// return false;
|
||||
// }
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 첨부파일 최대 용량
|
||||
****************************************************************************/
|
||||
function fn_maxFileSize(){
|
||||
return 52428800;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 첨부파일 최대 갯수 : 10
|
||||
****************************************************************************/
|
||||
function fn_maxFileCount(){
|
||||
return 10;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 첨부파일 최대 갯수 : 5
|
||||
****************************************************************************/
|
||||
function fn_maxFileCount2(){
|
||||
return 5;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 약관 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_selectPolicyIntro(param){
|
||||
let pagingParam = '?policyType='+param;
|
||||
|
||||
fn_openPopup("/webpolicy/policyDetailIntro.do"+pagingParam);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 기본 프로필 사진 처리
|
||||
****************************************************************************/
|
||||
function fn_setProfileUrlEmpty(param, widthParam, heightParam, index, className){
|
||||
if(fn_emptyCheck(param)){
|
||||
if(widthParam<heightParam){
|
||||
$("."+className+index).attr("src",param);
|
||||
$("."+className+index).css("width","100%");
|
||||
}
|
||||
else{
|
||||
$("."+className+index).attr("src",param);
|
||||
$("."+className+index).css("height","100%");
|
||||
}
|
||||
}
|
||||
else{
|
||||
$("."+className+index).attr("src","/image/web/profile-empty.svg");
|
||||
$("."+className+index).css("width","100%");
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 기본 프로필 사진 처리2
|
||||
****************************************************************************/
|
||||
function fn_setProfileUrlEmpty2(fileUrlParam,widthParam, heightParam){
|
||||
let object = new Object;
|
||||
if(fn_emptyCheck(fileUrlParam)){
|
||||
//파일 경로가 있지만 가로가 더 작은 경우
|
||||
if(parseInt(widthParam)<parseInt(heightParam)){
|
||||
object.styleValue = 'width:100%;';
|
||||
}
|
||||
else{
|
||||
//경로가 있지만 세로가 더 작은 경우
|
||||
object.styleValue = 'height:100%;';
|
||||
}
|
||||
|
||||
object.urlValue = fileUrlParam;
|
||||
}
|
||||
else{
|
||||
//파일 경로가 없는경우
|
||||
object.urlValue = '/image/web/profile-empty.svg';
|
||||
object.styleValue = 'width:100%;';
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 기본 프로필 사진 경로만 있을경우
|
||||
****************************************************************************/
|
||||
function fn_setProfileUrlSizeNone(fileUrlParam,profileIdParam,_callback){
|
||||
let image = new Image();
|
||||
image.src = fileUrlParam;
|
||||
|
||||
let widthParam = 0;
|
||||
let heightParam = 0;
|
||||
|
||||
let object = new Object;
|
||||
|
||||
if(!fn_emptyCheck(fileUrlParam)){
|
||||
//파일 경로가 없는경우
|
||||
object.urlValue = '/image/web/profile-empty.svg';
|
||||
object.styleValue = 'width:100%;';
|
||||
|
||||
$("#"+profileIdParam).attr('src',object.urlValue).attr('style',object.styleValue);
|
||||
}
|
||||
else{
|
||||
image.onload = function () {
|
||||
widthParam = image.width;
|
||||
heightParam = image.height;
|
||||
//_callback();
|
||||
|
||||
//파일 경로가 있지만 가로가 더 작은 경우
|
||||
if(widthParam<heightParam){
|
||||
object.styleValue = 'width:100%;';
|
||||
}
|
||||
else{
|
||||
//경로가 있지만 세로가 더 작은 경우
|
||||
object.styleValue = 'height:100%;';
|
||||
}
|
||||
|
||||
object.urlValue = fileUrlParam;
|
||||
|
||||
$("#"+profileIdParam).attr('src',object.urlValue).attr('style',object.styleValue);
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 디데이 구하기
|
||||
****************************************************************************/
|
||||
function fn_setDday(param){
|
||||
if(fn_emptyCheck(param)){
|
||||
const today = new Date();
|
||||
|
||||
let dateArray = param.split("-");
|
||||
const paramDay = new Date(dateArray[0], dateArray[1]-1, dateArray[2]);
|
||||
|
||||
if(paramDay>today){
|
||||
const gapDay = paramDay.getTime() - today.getTime();
|
||||
|
||||
const resultDate = Math.ceil(gapDay / (1000 * 60 * 60 * 24));
|
||||
|
||||
return 'D-'+resultDate;
|
||||
}
|
||||
else{
|
||||
const gapDay = today.getTime() - paramDay.getTime();
|
||||
|
||||
const resultDate = Math.ceil(gapDay / (1000 * 60 * 60 * 24))-1;
|
||||
|
||||
if(0==resultDate){
|
||||
return 'D-day';
|
||||
}
|
||||
else{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* selectBox 선택 시 색상
|
||||
****************************************************************************/
|
||||
function fn_selectColor(param){
|
||||
let selectValue = $(param).val();
|
||||
|
||||
if(""!=selectValue){
|
||||
$(param).css("color","#121212");
|
||||
}else{
|
||||
$(param).css("color","#969696");
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 프로필 화면 이동
|
||||
****************************************************************************/
|
||||
function fn_userProfileIntro(param){
|
||||
location.href = "/webuserprofile/selectListUserProfileIntro.do?userName="+param;
|
||||
|
||||
//fn_leftFormAction2("", "/webuserprofile/selectListUserProfileIntro.do?userName="+param+"&loginId="+param2);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색 화면 이동
|
||||
****************************************************************************/
|
||||
function fn_searchFeedIntro(param,param2){
|
||||
fn_leftFormAction2(menuClass, "/websearch/selectListSearchIntro.do?searchText=#"+param+"&searchType="+param2);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 전화번호 형식 (가운데 마스킹 처리)
|
||||
****************************************************************************/
|
||||
function fn_setFormatPhoneNumber(param){
|
||||
if(fn_emptyCheck(param)){
|
||||
return param
|
||||
.replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3')
|
||||
.split('-')
|
||||
.reduce((pre, cur, idx) => (idx === 1 ? pre + '****' : pre + cur), '');
|
||||
}
|
||||
else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function modalCloseEvent(){
|
||||
$(".loading-image-layer").hide();
|
||||
|
||||
let modalCheck = false;
|
||||
let modalArrLength = modalArr.length;
|
||||
|
||||
for(let i=0;i<modalArrLength;i++){
|
||||
let modalName = modalArr[i];
|
||||
if(location.hash=='#'+modalName){
|
||||
modalCheck = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(location.hash=='#'+modalArr[modalArr.length-1]){
|
||||
modalBackYn = 'N';
|
||||
}
|
||||
else{
|
||||
let modalName = modalArr[modalArr.length-1];
|
||||
|
||||
modalBackYn = 'Y';
|
||||
|
||||
|
||||
if("commonModal"==modalName && true==modalCheck){
|
||||
modalEvent.close();
|
||||
}
|
||||
else if("jobPostingApplyPopup"==modalName && true==modalCheck){
|
||||
$("#jobPostingApplyPopup .modal-header img").click();
|
||||
}
|
||||
else if("contentPopup"==modalName && true==modalCheck){
|
||||
$("#contentPopup .modal-header img").click();
|
||||
}
|
||||
else if("areaPopup"==modalName && true==modalCheck){
|
||||
$("#areaPopup .modal-header img").click();
|
||||
}
|
||||
else if("jobPopup"==modalName && true==modalCheck){
|
||||
$("#jobPopup .modal-header img").click();
|
||||
}
|
||||
else if("userFeedTagPopup"==modalName && true==modalCheck){
|
||||
$("#userFeedTagPopup .modal-header img").click();
|
||||
}
|
||||
else if("feedCommentPopup"==modalName && true==modalCheck){
|
||||
$("#feedCommentPopup .modal-header img").click();
|
||||
}
|
||||
else if("branchPopup"==modalName && true==modalCheck){
|
||||
$("#branchPopup .modal-header img").click();
|
||||
}
|
||||
else if("userTagPopup"==modalName && true==modalCheck){
|
||||
$("#userTagPopup .modal-header img").click();
|
||||
}
|
||||
else if("feedAndCommentPopup"==modalName && true==modalCheck){
|
||||
$("#feedAndCommentPopup .modal-header img").click();
|
||||
}
|
||||
else if("branchSelectPopup"==modalName && true==modalCheck){
|
||||
$("#branchSelectPopup .modal-header img").click();
|
||||
}
|
||||
else if("interestKeywordTagPopup"==modalName && true==modalCheck){
|
||||
$("#interestKeywordTagPopup .modal-header img").click();
|
||||
}
|
||||
else{
|
||||
//hash명이 정의되지않은 이름일시 팝업 전부 닫기
|
||||
|
||||
let modalArrLength = modalArr.length;
|
||||
|
||||
for(let i=0;i<modalArrLength;i++){
|
||||
fn_modalBackCloseEvent(modalArr[modalArr.length-1]);
|
||||
}
|
||||
modalArr = new Array();
|
||||
}
|
||||
}
|
||||
|
||||
const scrollPosition = pageYOffset;
|
||||
|
||||
if(0==modalArr.length){
|
||||
//팝업이 다 닫혀있다면 새로고침 켜기
|
||||
window.scrollTo(0,scrollPosition+1);
|
||||
|
||||
//setRefreshOn();
|
||||
}else{
|
||||
//팝업이 한개라도 열려있다면 새로고침 끄기
|
||||
//setRefreshOff();
|
||||
}
|
||||
}
|
||||
|
||||
//모달 Array에 있는 이름으로 닫기
|
||||
function fn_modalBackCloseEvent(modalNameParam){
|
||||
if("commonModal"==modalNameParam){
|
||||
modalEvent.close();
|
||||
}
|
||||
else if("jobPostingApplyPopup"==modalNameParam){
|
||||
$("#jobPostingApplyPopup .modal-header img").click();
|
||||
}
|
||||
else if("contentPopup"==modalNameParam){
|
||||
$("#contentPopup .modal-header img").click();
|
||||
}
|
||||
else if("areaPopup"==modalNameParam){
|
||||
$("#areaPopup .modal-header img").click();
|
||||
}
|
||||
else if("jobPopup"==modalNameParam){
|
||||
$("#jobPopup .modal-header img").click();
|
||||
}
|
||||
else if("userFeedTagPopup"==modalNameParam){
|
||||
$("#userFeedTagPopup .modal-header img").click();
|
||||
}
|
||||
else if("feedCommentPopup"==modalNameParam){
|
||||
$("#feedCommentPopup .modal-header img").click();
|
||||
}
|
||||
else if("branchPopup"==modalNameParam){
|
||||
$("#branchPopup .modal-header img").click();
|
||||
}
|
||||
else if("userTagPopup"==modalNameParam){
|
||||
$("#userTagPopup .modal-header img").click();
|
||||
}
|
||||
else if("feedAndCommentPopup"==modalNameParam){
|
||||
$("#feedAndCommentPopup .modal-header img").click();
|
||||
}
|
||||
else if("branchSelectPopup"==modalNameParam){
|
||||
$("#branchSelectPopup .modal-header img").click();
|
||||
}
|
||||
else if("interestKeywordTagPopup"==modalNameParam){
|
||||
$("#interestKeywordTagPopup .modal-header img").click();
|
||||
}
|
||||
}
|
||||
|
||||
function checkMobile(){
|
||||
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||
}
|
||||
|
||||
// 30분단위 시간값 셋팅
|
||||
function fn_setTimeValue(target, defaultTime){
|
||||
let timeHTML = '';
|
||||
|
||||
for(let i = 0; i <= 23; i++){
|
||||
let hour = i;
|
||||
|
||||
if(hour <10) hour = '0' + hour;
|
||||
|
||||
if(i==0){
|
||||
timeHTML += '<li class="option_list_item first">'+hour+':00</li>';
|
||||
timeHTML += '<li class="option_list_item">'+hour+':30</li>';
|
||||
}
|
||||
else{
|
||||
timeHTML += '<li class="option_list_item">'+hour+':00</li>';
|
||||
timeHTML += '<li class="option_list_item">'+hour+':30</li>';
|
||||
}
|
||||
|
||||
}
|
||||
$('#'+target).empty().html(timeHTML);
|
||||
|
||||
$('#'+target).siblings("button").text(defaultTime);
|
||||
$('#'+target).siblings("input").val(defaultTime);
|
||||
|
||||
// 옵션 선택 이벤트
|
||||
$('#'+target + '>.option_list_item').on('click', function() {
|
||||
let selectedOption = $(this).text();
|
||||
$(this).parent().siblings("button").text(selectedOption);
|
||||
$(this).parent().siblings("input").val(selectedOption);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 공백처리
|
||||
function fn_formatNull(param){
|
||||
if(null==param){
|
||||
return '';
|
||||
}else{
|
||||
return param;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
720
src/main/resources/static/js/mobile/common_option.js
Normal file
720
src/main/resources/static/js/mobile/common_option.js
Normal file
@@ -0,0 +1,720 @@
|
||||
/****************************************************************************
|
||||
* 조직 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListGroupOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webgroup/selectListGroupOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 직무 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListDutyOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webduty/selectListDutyOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 닥터 option 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMemberDoctorOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webmember/selectListMemberDoctorOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 연차유형 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListVacationOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webvacation/selectListVacationOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 예약/바로접수 등록 권한 체크(헤더)
|
||||
****************************************************************************/
|
||||
function fn_reserveRelationCheck(){
|
||||
let result;
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("menuName","예약현황")
|
||||
$.ajax({
|
||||
url: encodeURI('/webauth/selectHeaderRelation.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows.insertUseYn==='Y';
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 신환 등록 권한 체크(헤더)
|
||||
****************************************************************************/
|
||||
function fn_userRelationCheck(){
|
||||
let result;
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("menuName","고객 목록")
|
||||
$.ajax({
|
||||
url: encodeURI('/webauth/selectHeaderRelation.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows.insertUseYn==='Y';
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 권한 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListAuthOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webauth/selectListAuthOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 진료 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListTreatmentOption2(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webtreatment/selectListTreatmentOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 거래처 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListCompanyOption(){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webcompany/selectListCompanyOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result = data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 예약경로 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListReserveCategoryItemOption(){
|
||||
let formData = new FormData();
|
||||
let result=[];
|
||||
$.ajax({
|
||||
url: encodeURI('/webcategory/selectCategoryItemList.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if (0 < Object.keys(data.rows).length) {
|
||||
Object.keys(data.rows).forEach(category => {
|
||||
if('예약경로'===data.rows[category][0].categoryName){
|
||||
result=data.rows[category];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 닥터 /상담자 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListReserveMemberOption(param, param2){
|
||||
let result=[];
|
||||
|
||||
// if(true != fn_emptyCheck(param)){
|
||||
// return result;
|
||||
// }
|
||||
|
||||
if(true != fn_emptyCheck(param2)){
|
||||
return result;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("searchDate", param);
|
||||
formData.append("muTreatmentProcedureId", param2);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webmember/selectListMemberDoctorConsultingOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result=data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 진료 시술 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListTreatmentProcedureOption(param){
|
||||
let result=[];
|
||||
|
||||
if(true != fn_emptyCheck(param)){
|
||||
return result;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muTreatmentId", param);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webtreatmentprocedure/selectListTreatmentProcedureOption2.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result=data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 고객 - 1년간 진료내역 조회 (수납완료건) (List, option)
|
||||
****************************************************************************/
|
||||
function fn_selectListReserveUserOption(param){
|
||||
let result=[];
|
||||
|
||||
if(true != fn_emptyCheck(param)){
|
||||
return result;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muUserId", param);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webreserve/selectListReserveUserOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
result=data.rows;
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 검색필터 조회 (header 공통위해 user.js에서 가져옴.)
|
||||
****************************************************************************/
|
||||
function fn_selectCategoryList2(){
|
||||
let result = []
|
||||
let formData = new FormData();
|
||||
formData.append("menuClass", menuClass);
|
||||
$.ajax({
|
||||
url: encodeURI('/webcategory/selectCategoryList.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.rows.length){
|
||||
result = data.rows;
|
||||
}
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 근무시간 조회
|
||||
****************************************************************************/
|
||||
function fn_searchSetTime(target,searchDate){
|
||||
let result = []
|
||||
let formData = new FormData();
|
||||
formData.append("menuClass", menuClass);
|
||||
$.ajax({
|
||||
url: encodeURI('/webhospital/selectWorkTime.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.rows.length){
|
||||
result = data.rows;
|
||||
fn_setOperatingHours(target,searchDate,result[0])
|
||||
}
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
function fn_setWorkTimeValue(target,openStartTime,openEndTime){
|
||||
let timeHTML = '';
|
||||
let startTime = openStartTime.split(':')[0]
|
||||
let endTime = openEndTime.split(':')[0]
|
||||
for(let i = startTime; i < endTime; i++) {
|
||||
let hour = i;
|
||||
|
||||
if (i == 0) {
|
||||
timeHTML += '<li class="option_list_item first">' + hour + ':00</li>';
|
||||
timeHTML += '<li class="option_list_item">' + hour + ':30</li>';
|
||||
} else {
|
||||
timeHTML += '<li class="option_list_item">' + hour + ':00</li>';
|
||||
timeHTML += '<li class="option_list_item">' + hour + ':30</li>';
|
||||
}
|
||||
}
|
||||
$('#'+target).empty().html(timeHTML);
|
||||
|
||||
$('#'+target).siblings("button").text(openStartTime);
|
||||
$('#'+target).siblings("input").val(openStartTime);
|
||||
|
||||
// 옵션 선택 이벤트
|
||||
$('#'+target + '>.option_list_item').on('click', function() {
|
||||
let selectedOption = $(this).text();
|
||||
$(this).parent().siblings("button").text(selectedOption);
|
||||
$(this).parent().siblings("input").val(selectedOption);
|
||||
});
|
||||
}
|
||||
|
||||
function fn_setOperatingHours(target,searchDate,data) {
|
||||
const daysOfWeek = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
|
||||
const today = new Date(searchDate).getDay()
|
||||
const todayIndex = daysOfWeek[today];
|
||||
|
||||
const openYn = data[`${todayIndex}OpenYn`];
|
||||
if (openYn === 'Y') {
|
||||
const openStartTime = data[`${todayIndex}OpenStartTime`];
|
||||
const openEndTime = data[`${todayIndex}OpenEndTime`];
|
||||
fn_setWorkTimeValue(target,openStartTime, openEndTime);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 모달 검색필터 조회 (header 공통위해 user.js에서 가져옴.)
|
||||
****************************************************************************/
|
||||
function fn_selectModalOtherOption2(categoryCode){
|
||||
let formData = new FormData();
|
||||
formData.append('categoryCode', categoryCode);
|
||||
$.ajax({
|
||||
url: encodeURI('/webcategory/selectCategoryItem.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0' === data.msgCode){
|
||||
if (data.rows && 0 < Object.keys(data.rows).length) {
|
||||
let categoryName = '';
|
||||
$('.select_box button').each(function() {
|
||||
categoryName = $(this).text();
|
||||
if (Object.values(data.rows).some(item => item.categoryName === categoryName)) {
|
||||
let ulElement = $(this).parent().find('ul');
|
||||
ulElement.html('');
|
||||
|
||||
Object.values(data.rows).forEach(categoryItem => {
|
||||
if (categoryItem.categoryName === categoryName) {
|
||||
let categoryItemCode = categoryItem.categoryItemCode;
|
||||
let categoryItemName = categoryItem.categoryItemName;
|
||||
let nationality = '';
|
||||
|
||||
if (categoryItem.categoryName === '국적') {
|
||||
nationality = categoryItemName.toLowerCase().includes('한국'.toLowerCase()) ? 'local' : 'foreigner';
|
||||
} else if (categoryItem.categoryName === '고객구분') {
|
||||
let url = categoryItem.filePath.replace("C:", "");
|
||||
categoryItemName = `<img src="${url}">`;
|
||||
}
|
||||
|
||||
let listHTML = `<li class="option_list_item ${nationality}" data-code="${categoryCode}" id="li_${categoryItemCode}">${categoryItemName}</li>`;
|
||||
ulElement.append(listHTML);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
}
|
||||
});
|
||||
}
|
||||
112
src/main/resources/static/js/mobile/event/selectEvent.js
Normal file
112
src/main/resources/static/js/mobile/event/selectEvent.js
Normal file
@@ -0,0 +1,112 @@
|
||||
/****************************************************************************
|
||||
* 이벤트 정보 조회
|
||||
****************************************************************************/
|
||||
function fn_selectEvent(){
|
||||
let formData = new FormData();
|
||||
formData.append("muAppEventId", muAppEventId)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileevent/selectEvent.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length){
|
||||
const event = data.rows[0];
|
||||
$('.img_box').append(`<img style="width: 100%; height: 100%;" src="${decodeURI(event.filePath)}" alt="${event.title}">`);
|
||||
$('.text_box').append(`<p>${decodeURI(event.title)}</p>
|
||||
<p>기간 ${event.eventStartDate} ~ ${event.eventEndDate}</p>`);
|
||||
$('.content_box .title').text(event.content);
|
||||
$('.content_box div').append(event.detail);
|
||||
// swiperWrapper.empty(); // 기존 콘텐츠 초기화
|
||||
//
|
||||
// events.forEach((event, index) => {
|
||||
// // swiper-slide 클래스를 생성하여 이벤트 정보 삽입
|
||||
// const className = `swiper-slide slide-${index + 1}`;
|
||||
//
|
||||
// const slideHTML = `
|
||||
// <div class="${className}">
|
||||
// <div class="banner_box" onClick="location.href='home_event.html?id=${event.muAppEventId}'">
|
||||
// <div class="img_box">
|
||||
// <img style="width: 100%; height: 100%;" src="${decodeURI(event.filePath)}" alt="${event.title}">
|
||||
// </div>
|
||||
// <div class="text_box">
|
||||
// <p>${event.title}</p>
|
||||
// <p>${event.content}</p>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// `;
|
||||
//
|
||||
// // swiper-wrapper에 추가
|
||||
// swiperWrapper.append(slideHTML);
|
||||
// const homeSwiper = new Swiper('.homeSwiper', {
|
||||
// loop: true,
|
||||
// autoplay: true,
|
||||
// direction: 'horizontal',
|
||||
// pagination: {
|
||||
// el: '.swiper-pagination',
|
||||
// type: 'bullets'
|
||||
// },
|
||||
// });
|
||||
// });
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
//메인이벤트조회
|
||||
fn_selectEvent();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
// 아아디 keypress
|
||||
$(document).on('keypress', '#loginId', function(e){
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 비밀번호 keypress
|
||||
$(document).on('keypress', '#password', function(e){
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 로그인 버튼
|
||||
$("#btnLogin").click(function(){
|
||||
fn_login();
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
286
src/main/resources/static/js/mobile/home/home.js
Normal file
286
src/main/resources/static/js/mobile/home/home.js
Normal file
@@ -0,0 +1,286 @@
|
||||
/****************************************************************************
|
||||
* 메인이벤트조회
|
||||
****************************************************************************/
|
||||
function fn_selectMainEventList(){
|
||||
let formData = new FormData();
|
||||
formData.append("exposedYn", "Y")
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilehome/selectListEvent.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length){
|
||||
const events = data.rows;
|
||||
const swiperWrapper = $('.swiper-wrapper');
|
||||
swiperWrapper.empty(); // 기존 콘텐츠 초기화
|
||||
|
||||
events.forEach((event, index) => {
|
||||
// swiper-slide 클래스를 생성하여 이벤트 정보 삽입
|
||||
const className = `swiper-slide slide-${index + 1}`;
|
||||
|
||||
const slideHTML = `
|
||||
<div class="${className}">
|
||||
<div class="banner_box" onClick="fn_tapPageMove('home', 'home', '/mobileevent/selectEventIntro.do?muAppEventId=${event.muAppEventId}')">
|
||||
<div class="img_box">
|
||||
<img style="width: 100%; height: 100%;" src="${decodeURI(event.filePath)}" alt="${event.title}">
|
||||
</div>
|
||||
<div class="text_box">
|
||||
<p>${event.title}</p>
|
||||
<p>${event.content}</p>
|
||||
</div>
|
||||
<div class="dday_box">
|
||||
<p>
|
||||
남은기간<br/>
|
||||
<span>D - ${0<event.daysRemaining?event.daysRemaining:0}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// swiper-wrapper에 추가
|
||||
swiperWrapper.append(slideHTML);
|
||||
const homeSwiper = new Swiper('.homeSwiper', {
|
||||
loop: true,
|
||||
autoplay: true,
|
||||
direction: 'horizontal',
|
||||
/*pagination: {
|
||||
el: '.swiper-pagination',
|
||||
type: 'bullets'
|
||||
},*/
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 이벤트 리스트 조회
|
||||
****************************************************************************/
|
||||
function fn_selectEventList(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilehome/selectListEvent.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
let innerHTML='';
|
||||
if(0 < data.rows.length){
|
||||
const events = data.rows;
|
||||
// 기존 콘텐츠 초기화
|
||||
|
||||
events.forEach((event, index) => {
|
||||
innerHTML += `
|
||||
<div class="banner_box" onClick="fn_eventIntro('${event.muAppEventId}')">
|
||||
<div class="img_box">
|
||||
<img style="width: 100%; height: 100%;" src="${decodeURI(event.filePath)}" alt="${event.title}">
|
||||
</div>
|
||||
<div class="text_box">
|
||||
<p>${event.title}</p>
|
||||
<p>${event.content}</p>
|
||||
</div>
|
||||
<div class="dday_box">
|
||||
<p>
|
||||
남은기간<br/>
|
||||
<span>D - ${0<event.daysRemaining?event.daysRemaining:0}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
}else {
|
||||
innerHTML = '<div style="text-align: center;height: 280px; padding-top: 140px;">등록된 이벤트가 없습니다.</div>'
|
||||
}
|
||||
$('#event').empty().html(innerHTML).trigger("create");
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 메인컨텐츠 보드조회
|
||||
****************************************************************************/
|
||||
function fn_selectMainBoardList(){
|
||||
let formData = new FormData();
|
||||
formData.append("exposedYn","Y")
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilehome/selectListMedicalBoard.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if (0 < Object.keys(data.rows).length) {
|
||||
const boards = data.rows;
|
||||
const boardWrapper = $('#home');
|
||||
$('.popular_box').remove(); // 기존 콘텐츠 초기화
|
||||
|
||||
// 각 boardId에 대해 처리
|
||||
Object.keys(boards).forEach((boardId) => {
|
||||
const board = boards[boardId];
|
||||
|
||||
const boardDiv = document.createElement('div');
|
||||
boardDiv.className = 'popular_box';
|
||||
|
||||
// 첫 번째 board의 제목과 콘텐츠 추가
|
||||
boardDiv.innerHTML = `
|
||||
<p class="title">${board[0].boardTitle}</p>
|
||||
<p>${board[0].boardContent}</p>
|
||||
`;
|
||||
|
||||
// 각 콘텐츠 항목을 처리
|
||||
board.forEach((content, index) => {
|
||||
const contentUl = document.createElement('ul');
|
||||
contentUl.className = 'list_box';
|
||||
contentUl.innerHTML = `
|
||||
<li onclick="fn_medicalIntro('${content.muAppContentId}')">
|
||||
<p class="number">${index + 1}</p>
|
||||
<div>
|
||||
<div class="img_box">
|
||||
<img style="width: 48px; height: 48px;" src="${decodeURI(content.filePath2)}" alt="${content.title}">
|
||||
</div>
|
||||
<div class="text_box">
|
||||
<p class="label">${content.title}</p>
|
||||
<p>${content.content}</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
`;
|
||||
|
||||
// boardDiv에 contentUl 추가
|
||||
boardDiv.appendChild(contentUl);
|
||||
});
|
||||
|
||||
// boardWrapper에 boardDiv 추가
|
||||
boardWrapper.append(boardDiv);
|
||||
});
|
||||
}else{
|
||||
|
||||
}
|
||||
} else if (data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 이벤트 상세페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_eventIntro(id){
|
||||
fn_tapPageMove("home", "event", '/mobileevent/selectEventIntro.do?muAppEventId='+id);
|
||||
// location.href = '/mobileevent/selectEventIntro.do?muAppEventId='+id;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 시술 상세페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_medicalIntro(id){
|
||||
location.href = '/mobilemedical/selectMedicalIntro.do?muAppContentId='+id;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
//메인이벤트조회
|
||||
fn_selectMainEventList();
|
||||
|
||||
// 메인컨텐츠 보드조회
|
||||
fn_selectMainBoardList();
|
||||
|
||||
//main 높이값 - class
|
||||
if($('.notify_box').hasClass('open')){
|
||||
$('main').addClass('short');
|
||||
}else{
|
||||
$('main').addClass('short2');
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
$('.nav_box a[aria-controls="event"]').on('click', function(event) {
|
||||
fn_selectEventList();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 탭 선택
|
||||
****************************************************************************/
|
||||
function fn_pageTapSelect(){
|
||||
$(".navTap").removeClass("active");
|
||||
$(".tabContent").removeClass("active");
|
||||
if("home" == referTap){
|
||||
$("#navTap_home a").click();
|
||||
}else if("event" == referTap){
|
||||
$("#navTap_event a").click();
|
||||
}else{
|
||||
$("#navTap_home a").click();
|
||||
}
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
|
||||
// 페이지 탭 선택
|
||||
fn_pageTapSelect()
|
||||
});
|
||||
250
src/main/resources/static/js/mobile/hybrid_app.js
Normal file
250
src/main/resources/static/js/mobile/hybrid_app.js
Normal file
@@ -0,0 +1,250 @@
|
||||
////////////////////////////// 하이브리드 함수 시작 ///////////////
|
||||
let deviceUuid1 = '';
|
||||
let phoneType1 = '';
|
||||
let modelName1 = '';
|
||||
let osVersion1 = '';
|
||||
let pushKey1 = '';
|
||||
let appVersion1 = '';
|
||||
let deviceYn = 'N';
|
||||
|
||||
//모바일 단말 체크
|
||||
let isMobile = {
|
||||
Android: function () {
|
||||
return navigator.userAgent.match(/Android/i) == null ? false : true;
|
||||
},
|
||||
IOS: function () {
|
||||
return navigator.userAgent.match(/iPhone|iPad|iPod/i) == null ? false : true;
|
||||
}
|
||||
};
|
||||
|
||||
//함수1: 로그인 정보 네이티브 앱에 저장
|
||||
//웹에서 => 모바일 함수 호출 시 자동으로 함수2 호출됨
|
||||
function setLoginInfo(loginId, password, loginType) {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.setLoginInfo(loginId, password, loginType);
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "setLoginInfo",
|
||||
"loginId": loginId,
|
||||
"password": password,
|
||||
"loginType": loginType
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//함수2: 로그인 정보 가져오기
|
||||
//웹에서 => 모바일 함수 호출 시 함수3 자동 호출됨
|
||||
function getLoginInfo() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.getLoginInfo();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "getLoginInfo"
|
||||
};
|
||||
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//함수3: 로그인 정보 설정
|
||||
//모바일에서 => 웹 함수 호출 시 함수4 호출됨
|
||||
function fn_initLoginInfo(loginId, password, loginType) {
|
||||
//로그인 로직 추가
|
||||
if("MU"==loginType){
|
||||
fn_login(loginId, password);
|
||||
}else{
|
||||
fn_snsLogin(loginId, loginType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//함수4: 디바이스 정보 가져오기
|
||||
//웹에서 => 모바일 함수 호출 시 함수5 자동 호출
|
||||
function getDeviceInfo() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.getDeviceInfo();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "getDeviceInfo"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//함수5: 디바이스 정보 설정
|
||||
function fn_initDeviceInfo(deviceUuid, phoneType, modelName, osVersion, pushKey, appVersion) {
|
||||
//로그인 성공 시 서버에 저장 로직 추가
|
||||
|
||||
//앱버전 체크후 업데이트 페이지 이동
|
||||
//안드로이드 마켓 이동경로
|
||||
//아이폰 앱 스토어 이동경로
|
||||
deviceUuid1 = deviceUuid;
|
||||
phoneType1 = phoneType;
|
||||
modelName1 = modelName;
|
||||
osVersion1 = osVersion;
|
||||
pushKey1 = pushKey;
|
||||
appVersion1 = appVersion;
|
||||
|
||||
deviceYn = 'Y';
|
||||
}
|
||||
|
||||
|
||||
//함수6: 새로고침 함수 시작
|
||||
//웹에서 => 모바일 함수 호출 시 자동으로 함수2 호출됨
|
||||
function setRefreshOn() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.setRefreshOn();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "setRefreshOn"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//함수7: 새로고침 함수 종료
|
||||
//웹에서 => 모바일 함수 호출 시 자동으로 함수2 호출됨
|
||||
function setRefreshOff() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.setRefreshOff();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "setRefreshOff"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function openPopup() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.openPopup();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "openPopup"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function closePopup() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.closePopup();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "closePopup"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function logout() {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.logOut();
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "logOut"
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 전화걸기 */
|
||||
function call(phoneNumber) {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.call(phoneNumber);
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "call",
|
||||
"phoneNumber":phoneNumber
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage({name:'call',phoneNumber:phoneNumber});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function openWebLinkUrl(newUrl) {
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.openWebLinkUrl(newUrl);
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "openWebLinkUrl",
|
||||
"newUrl": newUrl
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//모바일에서 => 웹 함수 호출
|
||||
function fn_callStateRinging() {
|
||||
let videoContent = $(".swiper-slide.swiper-slide-active .image_wrap .image_box video")[0];
|
||||
let activeIdData = $(".swiper-slide.swiper-slide-active")[0].id;
|
||||
|
||||
let activeIdNumber = activeIdData.replace('slideIndex_', '');
|
||||
|
||||
if(null!=videoContent){
|
||||
let videoTime = videoContent.duration;
|
||||
let playAndMute = $(".swiper-slide.swiper-slide-active .image_wrap .playAndMute img")[0];
|
||||
|
||||
videoContent.pause();
|
||||
|
||||
$(playAndMute).attr('src','/image/web/video/play.svg').attr('style','opacity: 1');
|
||||
|
||||
//비디오 프로그래스바 정지
|
||||
fn_progressBarStop(videoTime,activeIdNumber);
|
||||
}else{
|
||||
let imageContent = $(".swiper-slide.swiper-slide-active .image_wrap .image_box img")[0];
|
||||
|
||||
branchClickEvent(activeIdNumber);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//사진 및 비디오 선택 이벤트 app
|
||||
function fn_selectFile(typeParam,fileTypeParam,imageMaxCountParam,videoMaxCountParam){
|
||||
if(null!=navigator.userAgent.match(/madeu-mobile/)){
|
||||
if(isMobile.Android()){//안드로이드
|
||||
window.madeu.selectFile(typeParam, fileTypeParam,imageMaxCountParam,videoMaxCountParam);
|
||||
}
|
||||
else if(isMobile.IOS()){//아이폰
|
||||
let postData = {
|
||||
"name": "selectFile",
|
||||
"type": typeParam,
|
||||
"fileType": fileTypeParam,
|
||||
"imageMaxCount": imageMaxCountParam,
|
||||
"videoMaxCount": videoMaxCountParam
|
||||
};
|
||||
window.webkit.messageHandlers.madeu.postMessage(postData);
|
||||
}
|
||||
}
|
||||
}
|
||||
////////////////////////////// 하이브리드 함수 종료 ///////////////
|
||||
573
src/main/resources/static/js/mobile/join/join.js
Normal file
573
src/main/resources/static/js/mobile/join/join.js
Normal file
@@ -0,0 +1,573 @@
|
||||
let isRunning = false;
|
||||
let phoneAuthYn = "N";
|
||||
|
||||
let userData = {};
|
||||
let certCellFlag = "N";
|
||||
let num = 60 * 3; // 몇분을 설정할지의 대한 변수 선언
|
||||
let myVar;
|
||||
let duplicateSuccess = false;
|
||||
/****************************************************************************
|
||||
* 정보입력 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_joinInputIntro() {
|
||||
let serviceAgreement = $('#service_agreement').prop('checked');
|
||||
let collectionAgreement = $('#collection_agreement').prop('checked');
|
||||
let marketingAgreement = $('#marketing_agreement').prop('checked');
|
||||
|
||||
if (!serviceAgreement) {
|
||||
modalEvent.warning('등록', '서비스 이용 약관은 필수 동의 사항입니다.')
|
||||
return;
|
||||
}
|
||||
if (!collectionAgreement) {
|
||||
modalEvent.warning('등록', '개인정보 수집 및 이용 약관은 필수 동의 사항입니다.')
|
||||
return;
|
||||
}
|
||||
|
||||
let param = "?serviceAgreement=" + serviceAgreement;
|
||||
param += "&collectionAgreement=" + collectionAgreement;
|
||||
param += "&marketingAgreement=" + marketingAgreement;
|
||||
location.href = '/mobilejoin/joinInputIntro.do'+param;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 가입 완료버튼
|
||||
****************************************************************************/
|
||||
function fn_join(){
|
||||
if(""==loginType){ //snsType MU:메이드유,K:카카오,N:네이버,A:애플
|
||||
loginType = "MU";
|
||||
}
|
||||
let membershipAccount = $("#membershipAccount").val();
|
||||
let membershipPassword = $("#membershipPassword").val();
|
||||
let passwordCheck = $("#passwordCheck").val();
|
||||
let userName = $("#userName").val();
|
||||
let phoneNumber = $("#phoneNumber").val().replace(/-/g, "");
|
||||
let introUser = $("#introUser").attr('data');
|
||||
|
||||
let reg_password = /^(?=.*[a-zA-Z])((?=.*\d)(?=.*\W)).{8,20}$/;
|
||||
|
||||
/* 디바이스 정보 추가 ( 임시 하드코딩 )*/
|
||||
// let phoneType = 'A'
|
||||
// let deviceUuid = 'e3fc0d3e-e1c7-49ea-bce3-6994721eb711'
|
||||
// let pushKey = ''
|
||||
// let modelName = 'galaxy'
|
||||
// let osVersion = '1'
|
||||
|
||||
if(true != fn_emptyCheck(membershipAccount)){
|
||||
modalEvent.warning("등록", "아이디를 입력하세요");
|
||||
return;
|
||||
}else if(membershipAccount.length<4){
|
||||
modalEvent.warning("등록", "아이디는 최소 4자 이상 입력해야합니다.");
|
||||
return;
|
||||
}else if(!duplicateSuccess&&"MU"==loginType){
|
||||
modalEvent.warning("등록", "아이디 중복여부를 확인하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
if("MU"==loginType){
|
||||
if(true != fn_emptyCheck(membershipPassword)){
|
||||
modalEvent.warning("등록", "비밀번호를 입력하세요");
|
||||
return;
|
||||
}else if(!reg_password.test(membershipPassword)) {
|
||||
modalEvent.warning("등록", "비밀번호는 숫자,영문,특수문자 조합 최소 8자리 최대 20자리로 입력해야합니다.");
|
||||
return;
|
||||
}else{
|
||||
if(membershipPassword!==passwordCheck){
|
||||
modalEvent.warning("등록", "비밀번호가 일치하지 않습니다.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(marketingAgreement)){
|
||||
modalEvent.warning("등록", "마케팅 수신 동의여부가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(userName)){
|
||||
modalEvent.warning("등록", "성함이 없습니다.");
|
||||
return;
|
||||
}else if(userName.length<2){
|
||||
modalEvent.warning("등록", "성함은 최소 2자 이상 입력해야합니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("등록", "휴대폰번호가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if('Y'!==phoneAuthYn){
|
||||
modalEvent.warning("등록", "휴대폰인증을 진행하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("membershipAccount", membershipAccount);
|
||||
formData.append("membershipPassword", membershipPassword);
|
||||
formData.append("passwordCheck", passwordCheck);
|
||||
formData.append("userName", userName);
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("introUser", introUser);
|
||||
formData.append("loginType", loginType);
|
||||
formData.append("marketingAgreement", marketingAgreement);
|
||||
|
||||
// formData.append("phoneType", phoneType);
|
||||
// formData.append("deviceUuid", deviceUuid);
|
||||
// formData.append("pushKey", pushKey);
|
||||
// formData.append("modelName", modelName);
|
||||
// formData.append("osVersion", osVersion);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilejoin/insertUser.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
if ('0' == data.msgCode) {
|
||||
modalEvent.success("성공", "회원가입 되었습니다.", function () {
|
||||
fn_joinToLogin(membershipAccount, membershipPassword);
|
||||
})
|
||||
} else {
|
||||
modalEvent.danger("등록 오류", data.msgDesc, function (){
|
||||
// location.href = '/mobilelogin/loginIntro.do';
|
||||
fn_leftFormAction("/mobilehome/loginIntro.do");
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend: function () {
|
||||
|
||||
},
|
||||
complete: function () {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 회원가입 후 로그인
|
||||
****************************************************************************/
|
||||
function fn_joinToLogin(param1, param2){
|
||||
let ajaxUrl = "";
|
||||
|
||||
if('MU'==loginType){
|
||||
ajaxUrl = "/login.do";
|
||||
}else{
|
||||
ajaxUrl = "/snsLogin.do";
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("loginId", param1);
|
||||
formData.append("password", param2);
|
||||
formData.append("loginType", loginType);
|
||||
formData.append("deviceUuid", deviceUuid1);
|
||||
formData.append("phoneType", phoneType1);
|
||||
formData.append("modelName", modelName1);
|
||||
formData.append("osVersion", osVersion1);
|
||||
formData.append("pushKey", pushKey1);
|
||||
formData.append("appVersion", appVersion1);
|
||||
formData.append("deviceYn", deviceYn);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilelogin'+ajaxUrl),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
fn_leftFormAction("/mobilehome/homeIntro.do");
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("로그인 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("로그인 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 아이디 중복확인
|
||||
****************************************************************************/
|
||||
function fn_duplicateCheck(){
|
||||
let membershipAccount = $("#membershipAccount").val();
|
||||
if(true != fn_emptyCheck(membershipAccount)){
|
||||
modalEvent.warning("등록", "아이디를 입력하세요");
|
||||
return;
|
||||
}else if(membershipAccount.length<4){
|
||||
modalEvent.warning("등록", "아이디는 최소 4자 이상 입력해야합니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("membershipAccount", membershipAccount);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilejoin/checkMembershipId.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
if ('0' == data.msgCode) {
|
||||
if (data.success === 'true') {
|
||||
modalEvent.success("", "사용 가능한 아이디입니다.", function () {
|
||||
duplicateSuccess = true;
|
||||
$('.first').append('<a id="idUseYn" style="font-size: small;color: #3985EA;">사용 가능한 아이디</a>')
|
||||
checkAllFields();
|
||||
})
|
||||
} else {
|
||||
modalEvent.success("", "이미 존재하는 아이디입니다.", function () {
|
||||
$('.first').append('<a id="idUseYn" style="font-size: small;color: red;">중복된 아이디</a>')
|
||||
})
|
||||
}
|
||||
} else {
|
||||
modalEvent.danger("등록 오류", "이미 사용중인 아이디입니다. 다른 아이디를 입력해주세요.");
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend: function () {
|
||||
|
||||
},
|
||||
complete: function () {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 추천인 아이디 확인
|
||||
****************************************************************************/
|
||||
function fn_checkUser(){
|
||||
let introUser = $("#introUser").val();
|
||||
|
||||
if(true != fn_emptyCheck(introUser)){
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("membershipAccount", introUser);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilejoin/checkMembershipId.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
if ('0' == data.msgCode) {
|
||||
if($('#introUserCheck')){
|
||||
$('#introUserCheck').remove();
|
||||
}
|
||||
if (0<data.rows.length) {
|
||||
$('#introUser').parent().parent().append('<a id="introUserCheck" style="font-size: small;color: #3985EA;">확인되었습니다.</a>')
|
||||
$('#introUser').attr('data',data.rows.muUserId);
|
||||
} else {
|
||||
$('#introUser').parent().parent().append('<a id="introUserCheck" style="font-size: small;color: red;">존재하지 않는 추천인 입니다.</a>')
|
||||
}
|
||||
} else {
|
||||
modalEvent.danger("등록 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend: function () {
|
||||
|
||||
},
|
||||
complete: function () {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
/****************************************************************************
|
||||
* 휴대폰 본인인증
|
||||
****************************************************************************/
|
||||
function fn_sendAuthNum(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호를 입력하세요.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
// 인증번호 발송
|
||||
fn_insertPhoneAuth();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 등록
|
||||
****************************************************************************/
|
||||
function fn_insertPhoneAuth(){
|
||||
|
||||
isRunning = false;
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authType = "JN";
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authType", authType);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
|
||||
modalEvent.success("", data.msgDesc, function(){
|
||||
isRunning = true;
|
||||
|
||||
fn_startTimer();
|
||||
$("#sendAuthNumBtn").text("재전송");
|
||||
$(".certification_box2").show();
|
||||
});
|
||||
|
||||
}else{
|
||||
modalEvent.danger("", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 타이머 함수 실행
|
||||
****************************************************************************/
|
||||
function fn_startTimer() {
|
||||
|
||||
// 남은 시간(초)
|
||||
let count = 180;
|
||||
let display = document.querySelector('#timer');
|
||||
|
||||
let minutes, seconds;
|
||||
let timer = setInterval(function () {
|
||||
if(isRunning){
|
||||
minutes = parseInt(count / 60, 10);
|
||||
seconds = parseInt(count % 60, 10);
|
||||
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||
seconds = seconds < 10 ? "0" + seconds : seconds;
|
||||
display.textContent = "유효시간 " + minutes + ":" + seconds;
|
||||
isRunning = true;
|
||||
}else{
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
// 타이머 종료
|
||||
if (--count < 0) {
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
$("#authNumber").val("");
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 확인 조회
|
||||
****************************************************************************/
|
||||
function fn_selectPhoneAuthCheck(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authNumber = $("#authNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호는 필수 값입니다.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
phoneNumber = phoneNumber.replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(authNumber)){
|
||||
modalEvent.warning("조회", "인증번호를 입력하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authNumber", authNumber);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
modalEvent.success("", data.msgDesc);
|
||||
phoneAuthYn = "Y";
|
||||
clearInterval(timer);
|
||||
isRunning = false;
|
||||
|
||||
// checkAllFields();
|
||||
const completeButton = $('.button_box button');
|
||||
|
||||
completeButton.addClass('active');
|
||||
completeButton.attr("disabled", false);
|
||||
}else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
phoneAuthYn = "N";
|
||||
checkAllFields();
|
||||
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
phoneAuthYn = "N";
|
||||
checkAllFields();
|
||||
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function checkAllFields(changeElement) {
|
||||
const requiredFields = document.querySelectorAll('#membershipAccount,#membershipPassword,#passwordCheck,#userName,#phoneNumber,#authNumber');
|
||||
let allFilled = true;
|
||||
const completeButton = $('.button_box button');
|
||||
|
||||
if(changeElement && changeElement[0]===$("#membershipAccount")[0]){
|
||||
duplicateSuccess=false;
|
||||
allFilled = false;
|
||||
$("#idUseYn").remove();
|
||||
}
|
||||
|
||||
requiredFields.forEach(function (field) {
|
||||
if (field.value.trim() === '') {
|
||||
allFilled = false;
|
||||
}
|
||||
if(!duplicateSuccess){
|
||||
allFilled = false;
|
||||
}
|
||||
if('Y'!==phoneAuthYn){
|
||||
allFilled = false;
|
||||
}
|
||||
});
|
||||
|
||||
if(allFilled) {
|
||||
completeButton.addClass('active');
|
||||
completeButton.attr("disabled", false);
|
||||
}else {
|
||||
completeButton.removeClass('active')
|
||||
completeButton.attr("disabled", true);
|
||||
}
|
||||
}
|
||||
|
||||
function alertFunc() {
|
||||
var min = num / 60;
|
||||
min = Math.floor(min);
|
||||
|
||||
var sec = num - (60 * min);
|
||||
sec = sec > 9 ? sec : "0"+sec ;
|
||||
|
||||
if(num == 0){
|
||||
certCellFlag = "T";
|
||||
clearInterval(myVar) // num 이 0초가 되었을대 clearInterval로 타이머 종료
|
||||
}
|
||||
num--;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit() {
|
||||
getDeviceInfo();
|
||||
|
||||
if(''!=loginType && ''!=snsEmail){
|
||||
$("#membershipAccount").val(snsEmail);
|
||||
$("#membershipAccount").css("disabled",true);
|
||||
|
||||
$("#duplicateCheckBtn").css("display","none");
|
||||
$("#passwordLi").css("display","none");
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent() {
|
||||
$('#membershipAccount,#membershipPassword,#passwordCheck,#userName,#phoneNumber,#authNumber').each(function () {
|
||||
$(this).on('change', ()=>checkAllFields($(this)));
|
||||
});
|
||||
|
||||
$("#introUser").change(function () {
|
||||
fn_checkUser();
|
||||
});
|
||||
|
||||
// 다음버튼
|
||||
$("#btn_joinInputIntro").click(function () {
|
||||
fn_joinInputIntro();
|
||||
});
|
||||
|
||||
// 전체동의 체크
|
||||
$("#all_agreement").change(function () {
|
||||
const checkboxes = document.querySelectorAll('input[name="join_agreement"]');
|
||||
checkboxes.forEach(function (checkbox) {
|
||||
checkbox.checked = this.checked;
|
||||
}, this);
|
||||
});
|
||||
}
|
||||
|
||||
$(function () {
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
98
src/main/resources/static/js/mobile/join/joinAgreement.js
Normal file
98
src/main/resources/static/js/mobile/join/joinAgreement.js
Normal file
@@ -0,0 +1,98 @@
|
||||
/****************************************************************************
|
||||
* 정보입력 페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_joinInputIntro(){
|
||||
let serviceAgreement = $('#service_agreement').prop('checked');
|
||||
let collectionAgreement = $('#collection_agreement').prop('checked');
|
||||
let marketingAgreement = $('#marketing_agreement').prop('checked');
|
||||
|
||||
if(!serviceAgreement){
|
||||
modalEvent.warning('등록','서비스 이용 약관은 필수 동의 사항입니다.')
|
||||
return;
|
||||
}
|
||||
if(!collectionAgreement){
|
||||
modalEvent.warning('등록','개인정보 수집 및 이용 약관은 필수 동의 사항입니다.')
|
||||
return;
|
||||
}
|
||||
|
||||
let param = "?serviceAgreement="+serviceAgreement;
|
||||
param += "&collectionAgreement="+collectionAgreement;
|
||||
param += "&marketingAgreement="+marketingAgreement;
|
||||
param += "&snsEmail="+snsEmail;
|
||||
param += "&loginType="+loginType;
|
||||
|
||||
location.href = '/mobilejoin/joinInputIntro.do'+param;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
// 아아디 keypress
|
||||
$(document).on('keypress', '#loginId', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 비밀번호 keypress
|
||||
$(document).on('keypress', '#password', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 다음버튼
|
||||
$("#btn_joinInputIntro").click(function () {
|
||||
fn_joinInputIntro();
|
||||
});
|
||||
|
||||
// 다음버튼
|
||||
$("#all_agreement").click(function () {
|
||||
fn_checkAll();
|
||||
});
|
||||
|
||||
// 전체동의 체크
|
||||
// $("#all_agreement").change(function () {
|
||||
// const checkboxes = document.querySelectorAll('input[name="join_agreement"]');
|
||||
// checkboxes.forEach(function(checkbox) {
|
||||
// checkbox.checked = this.checked;
|
||||
// }, this);
|
||||
// });
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 전체선택
|
||||
****************************************************************************/
|
||||
function fn_checkAll(){
|
||||
if( $("#all_agreement").is(':checked') ){
|
||||
$("input[name=join_agreement]").prop("checked", true);
|
||||
}else{
|
||||
$("input[name=join_agreement]").prop("checked", false);
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 전체선택 확인
|
||||
****************************************************************************/
|
||||
function fn_checkYn(){
|
||||
let rowsCount = $("input:checkbox[name=join_agreement]").length;
|
||||
let rowsCheckCount = $("input:checkbox[name=join_agreement]:checked").length;
|
||||
|
||||
if(rowsCount==rowsCheckCount){
|
||||
$("#all_agreement").prop("checked", true);
|
||||
}else{
|
||||
$("#all_agreement").prop("checked", false);
|
||||
}
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
11008
src/main/resources/static/js/mobile/jquery-1.12.4.js
vendored
Normal file
11008
src/main/resources/static/js/mobile/jquery-1.12.4.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
18706
src/main/resources/static/js/mobile/jquery-ui.js
vendored
Normal file
18706
src/main/resources/static/js/mobile/jquery-ui.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
src/main/resources/static/js/mobile/jquery.min.js
vendored
Normal file
2
src/main/resources/static/js/mobile/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
182
src/main/resources/static/js/mobile/login/login.js
Normal file
182
src/main/resources/static/js/mobile/login/login.js
Normal file
@@ -0,0 +1,182 @@
|
||||
/****************************************************************************
|
||||
* 아이디, 패스워드 엔터 이벤트
|
||||
****************************************************************************/
|
||||
function fn_enter(e){
|
||||
if(e.which){
|
||||
// 파이어폭스
|
||||
if(13 == e.which) {
|
||||
//로그인 액션 스크립트
|
||||
fn_login();
|
||||
}
|
||||
}
|
||||
else{
|
||||
// 윈도우, 사파리, 크롬
|
||||
if(13 == event.keyCode) {
|
||||
//로그인 액션 스크립트
|
||||
fn_login();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 로그인 이벤트
|
||||
****************************************************************************/
|
||||
function fn_login(){
|
||||
let loginId = $("#loginId").val();
|
||||
let password = $("#password").val();
|
||||
|
||||
if(true != fn_emptyCheck(loginId)){
|
||||
modalEvent.warning("", "아이디를 입력하세요");
|
||||
$("#loginId").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(password)) {
|
||||
modalEvent.warning("", "비밀번호를 입력하세요");
|
||||
$("#password").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
// 로그인할 때 한 번 더 호출
|
||||
getDeviceInfo();
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("loginId", loginId);
|
||||
formData.append("password", password);
|
||||
formData.append("deviceUuid", deviceUuid1);
|
||||
formData.append("phoneType", phoneType1);
|
||||
formData.append("modelName", modelName1);
|
||||
formData.append("osVersion", osVersion1);
|
||||
formData.append("pushKey", pushKey1);
|
||||
formData.append("appVersion", appVersion1);
|
||||
formData.append("deviceYn", deviceYn);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilelogin/login.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
setLoginInfo(loginId,password,"MU");
|
||||
// location.href = '/home';
|
||||
fn_leftFormAction("/home");
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("로그인 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("로그인 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 로그인 이벤트 (카카오)
|
||||
****************************************************************************/
|
||||
function loginWithKakao(){
|
||||
Kakao.Auth.authorize({
|
||||
redirectUri : 'http://nrm.madeu.co.kr/mobilesnslogin/kakaoLoginCallBackIntro.do'
|
||||
// redirectUri: 'http://localhost:8080/mobilesnslogin/kakaoLoginCallBackIntro.do',
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
getDeviceInfo();
|
||||
|
||||
// getLoginInfo();
|
||||
|
||||
<!--kakao-->
|
||||
Kakao.init('5b8e8d554e06d9b6cd5f1fb628ed301a');
|
||||
Kakao.isInitialized();
|
||||
|
||||
<!--apple-->
|
||||
// AppleID.auth.init({
|
||||
// clientId : 'com.play-entree.mobile',
|
||||
// scope : 'email',
|
||||
// redirectURI : 'http://nrm.madeu.co.kr/mobilesnslogin/appleLoginCallBackIntro.do',
|
||||
// state : 'play-entree',
|
||||
// nonce : 'entree',
|
||||
// usePopup : false //or false defaults to false
|
||||
// });
|
||||
|
||||
<!--naver-->
|
||||
let clientId = "EhgHX46SiQBMflqt41YB";
|
||||
let callbackUrl = "http://nrm.madeu.co.kr/mobilesnslogin/naverLoginCallBackIntro.do";
|
||||
// let callbackUrl = "http://localhost:8080/mobilesnslogin/naverLoginCallBackIntro.do";
|
||||
let naverLogin = new naver.LoginWithNaverId({
|
||||
clientId: clientId,
|
||||
callbackUrl: callbackUrl,
|
||||
isPopup: false,
|
||||
loginButton: {color: "green", type: 1, height: 50}
|
||||
});
|
||||
|
||||
naverLogin.init();
|
||||
|
||||
$(document).on("click", "#naverLogin", function(){
|
||||
let btnNaverLogin = document.getElementById("naverIdLogin").firstChild;
|
||||
btnNaverLogin.click();
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
// 아아디 keypress
|
||||
$(document).on('keypress', '#loginId', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 비밀번호 keypress
|
||||
$(document).on('keypress', '#password', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 로그인 버튼
|
||||
$("#btnLogin").click(function () {
|
||||
fn_login();
|
||||
});
|
||||
|
||||
// 회원가입 버튼
|
||||
$("#btnJoin").click(function () {
|
||||
fn_joinIntro();
|
||||
});
|
||||
|
||||
// 계정찾기 버튼
|
||||
$("#btnFindAccount").click(function () {
|
||||
fn_findAccountIntro();
|
||||
});
|
||||
|
||||
// 비밀번호 찾기 버튼
|
||||
$("#btnFindPassword").click(function () {
|
||||
fn_findPasswordIntro();
|
||||
});
|
||||
|
||||
$("#naverLogin").on("click", function(){
|
||||
let btnNaverLogin = document.getElementById("naverIdLogin").firstChild;
|
||||
btnNaverLogin.click();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
64
src/main/resources/static/js/mobile/medical/selectMedical.js
Normal file
64
src/main/resources/static/js/mobile/medical/selectMedical.js
Normal file
@@ -0,0 +1,64 @@
|
||||
/****************************************************************************
|
||||
* 시술 정보 조회
|
||||
****************************************************************************/
|
||||
function fn_selectMedical(){
|
||||
let formData = new FormData();
|
||||
formData.append("muAppContentId", muAppContentId)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemedical/selectMedical.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length){
|
||||
const content = data.rows[0];
|
||||
$('.img_box').append(`<img style="width: 100%; height: 100%;" src="${decodeURI(content.filePath)}" alt="${content.title}">`);
|
||||
$('.text_box').append(`<p>${content.title}</p>`);
|
||||
$('.content_box div').append(content.detail);
|
||||
$('.content_box .article').append(content.content);
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
fn_selectMedical();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
336
src/main/resources/static/js/mobile/medical/selectMedicalList.js
Normal file
336
src/main/resources/static/js/mobile/medical/selectMedicalList.js
Normal file
@@ -0,0 +1,336 @@
|
||||
/****************************************************************************
|
||||
* 메인이벤트조회
|
||||
****************************************************************************/
|
||||
function fn_selectMainEventList(){
|
||||
let formData = new FormData();
|
||||
formData.append("exposedYn", "Y")
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilehome/selectListEvent.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length){
|
||||
const events = data.rows;
|
||||
const swiperWrapper = $('.swiper-wrapper');
|
||||
swiperWrapper.empty(); // 기존 콘텐츠 초기화
|
||||
|
||||
events.forEach((event, index) => {
|
||||
// swiper-slide 클래스를 생성하여 이벤트 정보 삽입
|
||||
const className = `swiper-slide slide-${index + 1}`;
|
||||
|
||||
const slideHTML = `
|
||||
<div class="${className}">
|
||||
<div class="banner_box" onClick="fn_eventIntro('${event.muAppEventId}')">
|
||||
<div class="img_box">
|
||||
<img style="width: 100%; height: 100%;" src="${decodeURI(event.filePath)}" alt="${event.title}">
|
||||
</div>
|
||||
<div class="dday_box">
|
||||
<p>
|
||||
남은기간<br/>
|
||||
<span>D - ${0<event.daysRemaining?event.daysRemaining:0}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// swiper-wrapper에 추가
|
||||
swiperWrapper.append(slideHTML);
|
||||
const homeSwiper = new Swiper('.homeSwiper', {
|
||||
loop: true,
|
||||
autoplay: true,
|
||||
direction: 'horizontal',
|
||||
/*pagination: {
|
||||
el: '.swiper-pagination',
|
||||
type: 'bullets'
|
||||
},*/
|
||||
});
|
||||
});
|
||||
}else{
|
||||
$('.tab_panel').css('padding-top',0);
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 메인컨텐츠 보드조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMedicalBoardJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemedical/selectListMedicalBoard.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
const boardWrapper = $('#popularity');
|
||||
$('.popular_box').remove(); // 기존 콘텐츠 초기화
|
||||
if (0 < Object.keys(data.rows).length) {
|
||||
const boards = data.rows;
|
||||
console.log(boards);
|
||||
// 각 boardId에 대해 처리
|
||||
Object.keys(boards).forEach((boardId,index) => {
|
||||
const board = boards[boardId];
|
||||
|
||||
const boardDiv = document.createElement('div');
|
||||
boardDiv.className = `popular_box ${index===0?'first':''}`;
|
||||
|
||||
// 첫 번째 board의 제목과 콘텐츠 추가
|
||||
boardDiv.innerHTML = `
|
||||
<p class="title">${board[0].boardTitle}</p>
|
||||
<p>${board[0].boardContent}</p>
|
||||
`;
|
||||
|
||||
// 각 콘텐츠 항목을 처리
|
||||
board.forEach((content, index) => {
|
||||
const contentUl = document.createElement('ul');
|
||||
contentUl.className='list_box';
|
||||
contentUl.innerHTML = `
|
||||
<li onclick="fn_medicalIntro('${content.muAppContentId}')">
|
||||
<p class="number">${index + 1}</p>
|
||||
<div>
|
||||
<div class="img_box">
|
||||
<img style="width: 48px; height: 48px;" src="${decodeURI(content.filePath2)}" alt="${content.title}">
|
||||
</div>
|
||||
<div class="text_box">
|
||||
<p class="label">${content.title}</p>
|
||||
<p>${content.content}</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
`;
|
||||
|
||||
// boardDiv에 contentUl 추가
|
||||
boardDiv.appendChild(contentUl);
|
||||
});
|
||||
|
||||
// boardWrapper에 boardDiv 추가
|
||||
boardWrapper.append(boardDiv);
|
||||
});
|
||||
} else if (data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
boardWrapper.append(`<div class="popular_box" style="width: 100%;height:72px;padding: 0;margin: 0;border: none;display: flex;align-items: center;justify-content: center;background: white">
|
||||
<p class="user">조회 정보가 없습니다.</p>
|
||||
</div>`);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 시술 리스트 정보 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMedicalJson(){
|
||||
let contentWrapper = ''
|
||||
switch (categoryCode) {
|
||||
case 'popular':
|
||||
contentWrapper = $('#popularity ul');
|
||||
break;
|
||||
case 'petit':
|
||||
contentWrapper = $('#petit ul');
|
||||
break;
|
||||
case 'skin':
|
||||
contentWrapper = $('#skin ul');
|
||||
break;
|
||||
case 'fat':
|
||||
contentWrapper = $('#diet ul');
|
||||
break;
|
||||
}
|
||||
contentWrapper.empty();
|
||||
let formData = new FormData();
|
||||
formData.append("categoryCode", categoryCode)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemedical/selectListMedical.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length) {
|
||||
const contents = data.rows;
|
||||
contents.forEach((content, index) => {
|
||||
const innerHtml = `
|
||||
<li class="${0 === index ? 'first' : ''}" onclick="fn_medicalIntro('${content.muAppContentId}')">
|
||||
<div class="img_box">
|
||||
<img style="width: 72px; height: 72px;" src="${decodeURI(content.filePath2)}" alt="${content.title}">
|
||||
</div>
|
||||
<div class="text_box">
|
||||
<p class="label">${content.title}</p>
|
||||
<p>${content.content}</p>
|
||||
</div>
|
||||
</li>
|
||||
`
|
||||
contentWrapper.append(innerHtml);
|
||||
});
|
||||
}else{
|
||||
contentWrapper.append(`<div class="" style="width: 100%;height:72px;padding: 0;margin: 0;border: none;display: flex;align-items: center;justify-content: center;background: white">
|
||||
<p class="user">조회 정보가 없습니다.</p>
|
||||
</div>`);
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색하기
|
||||
****************************************************************************/
|
||||
function fn_medicalSearch(target){
|
||||
if(target){
|
||||
categoryCode = $(target).data('code')
|
||||
}else{
|
||||
categoryCode = $('.nav-tabs .active p').data('code');
|
||||
}
|
||||
|
||||
if("popular" == categoryCode){
|
||||
referTap = "popularity";
|
||||
}else if("petit" == categoryCode){
|
||||
referTap = "petit";
|
||||
}else if("skin" == categoryCode){
|
||||
referTap = "skin";
|
||||
}else if("fat" == categoryCode){
|
||||
referTap = "diet";
|
||||
}else{
|
||||
referTap = "popularity";
|
||||
}
|
||||
|
||||
if('popular'===categoryCode||''===categoryCode){
|
||||
fn_selectListMedicalBoardJson();
|
||||
}else{
|
||||
fn_selectListMedicalJson();
|
||||
}
|
||||
}
|
||||
/***************************************************************************
|
||||
* 이벤트 상세페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_eventIntro(id){
|
||||
fn_tapPageMove("medical", referTap, '/mobileevent/selectEventIntro.do?muAppEventId='+id);
|
||||
// location.href = '/mobileevent/selectEventIntro.do?muAppEventId='+id;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 시술 상세페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_medicalIntro(id){
|
||||
fn_tapPageMove("medical", referTap, '/mobilemedical/selectMedicalIntro.do?muAppContentId='+id);
|
||||
// location.href = '/mobilemedical/selectMedicalIntro.do?muAppContentId='+id;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
if($('.notify_box').hasClass('open')){
|
||||
$('main').addClass('short');
|
||||
}else{
|
||||
$('main').addClass('short2');
|
||||
}
|
||||
|
||||
if(!categoryCode){
|
||||
|
||||
}else{
|
||||
// 모든 <a> 태그 안의 <p> 태그를 순환
|
||||
$('.nav-tabs p').each(function() {
|
||||
const dataCode = $(this).data('code'); // 각 <p> 태그의 텍스트 가져오기
|
||||
|
||||
// 특정 텍스트와 일치하는지 확인
|
||||
if (dataCode === categoryCode) {
|
||||
$(this).siblings('li').addClass('active');// 텍스트 색상 변경
|
||||
}
|
||||
});
|
||||
}
|
||||
fn_medicalSearch();
|
||||
fn_selectMainEventList();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
$('.nav_box a').on('click', function(event) {
|
||||
fn_medicalSearch(event.target);
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 탭 선택
|
||||
****************************************************************************/
|
||||
function fn_pageTapSelect(){
|
||||
$(".navTap").removeClass("active");
|
||||
$(".tabContent").removeClass("active");
|
||||
if("popularity" == referTap){
|
||||
$("#navTap_popularity a").click();
|
||||
}else if("petit" == referTap){
|
||||
$("#navTap_petit a").click();
|
||||
}else if("skin" == referTap){
|
||||
$("#navTap_skin a").click();
|
||||
}else if("diet" == referTap){
|
||||
$("#navTap_diet a").click();
|
||||
}else{
|
||||
$("#navTap_popularity a").click();
|
||||
}
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 탭 선택
|
||||
fn_pageTapSelect();
|
||||
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,163 @@
|
||||
/****************************************************************************
|
||||
* 멤버십충전 내역 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMembershipChargeJson(){
|
||||
let formData = new FormData();
|
||||
formData.append("membershipSearchDate",membershipSearchDate);
|
||||
formData.append("sortBy",sortBy);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemembership/selectListMembershipCharge.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
const ListWrapper = $('.list_btm');
|
||||
ListWrapper.empty();
|
||||
if(0<data.totalCount){
|
||||
let innerHtml = '<ul>';
|
||||
data.rows.forEach((chargeData,index)=>{
|
||||
innerHtml+=`<li>
|
||||
<div>
|
||||
<p>${chargeData.writeDate}</p>
|
||||
<p>${chargeData.chargePaymentItemName}</p>
|
||||
</div>
|
||||
<div class="right_box">
|
||||
<p>충전 금액</p>
|
||||
<p>${chargeData.rechargeAmount}</p>
|
||||
</div>
|
||||
</li>`
|
||||
})
|
||||
innerHtml += '</ul>';
|
||||
ListWrapper.append(innerHtml)
|
||||
} else {
|
||||
const innerHtml = '<ul><li style="padding: 15px 20px; margin-top: 10px;">멤버십 충전내역이 없습니다.</li>';
|
||||
ListWrapper.append(innerHtml);
|
||||
}
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색하기
|
||||
****************************************************************************/
|
||||
function fn_membershipChargeSearch(param){
|
||||
sortBy = $(".button_box .on").attr("id");
|
||||
fn_selectListMembershipChargeJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
if(isMobile.Android()){
|
||||
// 안드로이드
|
||||
let value;
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").click(function(e){
|
||||
e.preventDefault();
|
||||
value = prompt("monthPicker");
|
||||
|
||||
if(null === value || !value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
|
||||
}else{
|
||||
let valueArr = value.split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
membershipSearchDate = year+"-"+month;
|
||||
$(this).val(membershipSearchDate);
|
||||
fn_selectListMembershipChargeJson();
|
||||
});
|
||||
|
||||
}else if(isMobile.IOS()){
|
||||
// IOS
|
||||
let value; /*$(this).val() */
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").change(function(){
|
||||
value = $(this).val();
|
||||
if(!value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
}else{
|
||||
let valueArr = $(this).val().split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
membershipSearchDate = year+"-"+month;
|
||||
$(this).val(membershipSearchDate);
|
||||
|
||||
fn_selectListMembershipChargeJson();
|
||||
});
|
||||
}
|
||||
|
||||
if(membershipSearchDate){
|
||||
$("#mmDatepicker").val(membershipSearchDate)
|
||||
}else{
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
let year = toDate.getFullYear();
|
||||
let month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
$("#mmDatepicker").val( year+'-'+month).trigger("change");
|
||||
|
||||
membershipSearchDate = year+'-'+month;
|
||||
}
|
||||
|
||||
//멤버십 충전내역 조회
|
||||
fn_membershipChargeSearch();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
$(".button_box button").on('click', function(){
|
||||
$(".button_box .on").removeClass('on');
|
||||
$(this).addClass('on');
|
||||
fn_membershipChargeSearch();
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,167 @@
|
||||
/****************************************************************************
|
||||
* 멤버십사용 내역 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMembershipUseJson(){
|
||||
let formData = new FormData();
|
||||
formData.append("membershipSearchDate",membershipSearchDate);
|
||||
formData.append("sortBy",sortBy);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemembership/selectListMembershipUse.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
const ListWrapper = $('.list_btm');
|
||||
ListWrapper.empty();
|
||||
if(0<data.totalCount){
|
||||
let innerHtml = '<ul>';
|
||||
data.rows.forEach((useData,index)=>{
|
||||
innerHtml+=`<li>
|
||||
<div>
|
||||
<p>${useData.writeDate}</p>
|
||||
<p>
|
||||
<span>${useData.treatmentName}</span>
|
||||
<span>${useData.procedureName}</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="right_box">
|
||||
<p>사용 금액</p>
|
||||
<p>${useData.usedAmount}</p>
|
||||
</div>
|
||||
</li>`
|
||||
})
|
||||
innerHtml += '</ul>';
|
||||
ListWrapper.append(innerHtml)
|
||||
} else {
|
||||
const innerHtml = '<ul><li style="padding: 15px 20px; margin-top: 10px;">멤버십 사용내역이 없습니다.</li>';
|
||||
ListWrapper.append(innerHtml);
|
||||
}
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색하기
|
||||
****************************************************************************/
|
||||
function fn_membershipUseSearch(param){
|
||||
sortBy = $(".button_box .on").attr("id");
|
||||
fn_selectListMembershipUseJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
if(isMobile.Android()){
|
||||
// 안드로이드
|
||||
let value;
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").click(function(e){
|
||||
e.preventDefault();
|
||||
value = prompt("monthPicker");
|
||||
|
||||
if(null === value || !value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
|
||||
}else{
|
||||
let valueArr = value.split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
membershipSearchDate = year+"-"+month;
|
||||
$(this).val(membershipSearchDate);
|
||||
|
||||
fn_selectListMembershipUseJson();
|
||||
});
|
||||
|
||||
}else if(isMobile.IOS()){
|
||||
// IOS
|
||||
let value; /**/
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").change(function(){
|
||||
value = $(this).val();
|
||||
if(!value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
}else{
|
||||
let valueArr = $(this).val().split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
membershipSearchDate = year+"-"+month;
|
||||
$(this).val(membershipSearchDate);
|
||||
|
||||
fn_selectListMembershipUseJson();
|
||||
});
|
||||
}
|
||||
|
||||
if(membershipSearchDate){
|
||||
$("#mmDatepicker").val(membershipSearchDate)
|
||||
}else{
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
let year = toDate.getFullYear();
|
||||
let month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
$("#mmDatepicker").val( year+'-'+month).trigger("change");
|
||||
|
||||
membershipSearchDate = year+'-'+month;
|
||||
}
|
||||
|
||||
//멤버십 충전내역 조회
|
||||
fn_membershipUseSearch();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
$(".button_box button").on('click', function(){
|
||||
$(".button_box .on").removeClass('on');
|
||||
$(this).addClass('on');
|
||||
fn_membershipUseSearch();
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,240 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]마이페이지- 회원탈퇴 팝업
|
||||
작성일 : 2024. 09. 24.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024. 09. 24. NTsoft 최초 생성
|
||||
*/
|
||||
let userAccountDeleteModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#userAccountDeleteModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#userAccountDeleteModal .btnCancle').on("click", function(){
|
||||
userAccountDeleteModal.close();
|
||||
});
|
||||
|
||||
$('#userAccountDeleteModal .btnSave').on("click", function(){
|
||||
userAccountDeleteModal.save("I");
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( userAccountDeleteModal.callback ) {
|
||||
userAccountDeleteModal.callback(checkedData);
|
||||
}
|
||||
userAccountDeleteModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
let muAttendanceId = userAccountDeleteModal.reqParam.muAttendanceId;
|
||||
let muAttendanceId2 = userAccountDeleteModal.reqParam.muAttendanceId2;
|
||||
let muMemberId = userAccountDeleteModal.reqParam.muMemberId;
|
||||
let attendanceDate = userAccountDeleteModal.reqParam.attendanceDate;
|
||||
|
||||
if(true != fn_emptyCheck(muAttendanceId) && true != fn_emptyCheck(muAttendanceId2)){
|
||||
modalEvent.warning("수정", "근태 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(muMemberId)){
|
||||
modalEvent.warning("수정", "직원 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(attendanceDate)){
|
||||
modalEvent.warning("수정", "근태날짜 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("menuClass", menuClass);
|
||||
formData.append("muAttendanceId", muAttendanceId);
|
||||
formData.append("muAttendanceId2", muAttendanceId2);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webattendance/selectAttendanceCommute.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.rows.length){
|
||||
$("#userAccountDeleteModal #modalMemberNameId").text(data.rows[0].memberName+'('+data.rows[0].loginId+')');
|
||||
$("#userAccountDeleteModal #modalAttendanceDate").text(attendanceDate);
|
||||
|
||||
// $("#userAccountDeleteModal #modalStartTime").siblings("button").text(data.rows[0].startTime);
|
||||
$("#userAccountDeleteModal #modalStartTime").val(data.rows[0].startTime||"00:00");
|
||||
// $("#userAccountDeleteModal #modalEndTime").siblings("button").text(data.rows[0].endTime);
|
||||
$("#userAccountDeleteModal #modalEndTime").val(data.rows[0].endTime||"00:00");
|
||||
}
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
//저장
|
||||
save:function(state) {
|
||||
let muAttendanceId = userAccountDeleteModal.reqParam.muAttendanceId;
|
||||
let muAttendanceId2 = userAccountDeleteModal.reqParam.muAttendanceId2;
|
||||
let muMemberId = userAccountDeleteModal.reqParam.muMemberId;
|
||||
let attendanceDate = userAccountDeleteModal.reqParam.attendanceDate;
|
||||
let startTime = $("#userAccountDeleteModal #modalStartTime").val();
|
||||
let endTime = $("#userAccountDeleteModal #modalEndTime").val();
|
||||
|
||||
if(true != fn_emptyCheck(muAttendanceId) && true != fn_emptyCheck(muAttendanceId2)){
|
||||
modalEvent.warning("수정", "근태 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(muMemberId)){
|
||||
modalEvent.warning("수정", "직원 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(attendanceDate)){
|
||||
modalEvent.warning("수정", "날짜 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(startTime)){
|
||||
modalEvent.warning("수정", "출근 시간 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(endTime)){
|
||||
modalEvent.warning("수정", "퇴근 시간 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
if(startTime>=endTime){
|
||||
modalEvent.warning("수정", "출/퇴근기록을 다시 확인해주세요");
|
||||
return;
|
||||
}
|
||||
|
||||
modalEvent.info("수정", "출/퇴근 정보를 수정하시겠습니까?", function(){
|
||||
let formData = new FormData();
|
||||
formData.append("menuClass", menuClass);
|
||||
formData.append("muAttendanceId", muAttendanceId);
|
||||
formData.append("muAttendanceId2", muAttendanceId2);
|
||||
formData.append("muMemberId", muMemberId);
|
||||
formData.append("attendanceDate", attendanceDate);
|
||||
formData.append("startTime", startTime);
|
||||
formData.append("endTime", endTime);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/webattendance/updateAttendanceCommute.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
modalEvent.success("수정 성공", data.msgDesc, function(){
|
||||
if( userAccountDeleteModal.callback ) {
|
||||
userAccountDeleteModal.callback();
|
||||
}
|
||||
userAccountDeleteModal.close();
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("수정 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("수정 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
userAccountDeleteModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
userAccountDeleteModal.callback = callback;
|
||||
userAccountDeleteModal.reqParam = reqParam;
|
||||
userAccountDeleteModal.dataList = null;
|
||||
|
||||
fn_dateTimePicker1("#modalStartTime", "00:00");
|
||||
fn_dateTimePicker1("#2", "00:00");
|
||||
|
||||
setTimeout(function(){
|
||||
$('#userAccountDeleteModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
userAccountDeleteModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#userAccountDeleteModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#userAccountDeleteModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal withdrawal_modal fade" id="userAccountDeleteModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">회원탈퇴</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p>회원탈퇴를 진행하시겠습니까?</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="close_btn">취소</button>
|
||||
<button class="save_btn">탈퇴하기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
225
src/main/resources/static/js/mobile/mypage/selectMyPageInfo.js
Normal file
225
src/main/resources/static/js/mobile/mypage/selectMyPageInfo.js
Normal file
@@ -0,0 +1,225 @@
|
||||
/****************************************************************************
|
||||
* 멤버십 정보 조회
|
||||
****************************************************************************/
|
||||
function fn_selectMembershipJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilemembership/selectTotalMembershipBalance.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0 < data.rows.length) {
|
||||
$("#membershipBalance").text(data.rows[0].membershipBalance+' 원');
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
function fn_deleteUser(){
|
||||
modalEvent.info("삭제", "앱 탈퇴를 진행하시겠습니까?", function(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilelogin/deleteUser.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
modalEvent.success("성공", "탈퇴가 완료되었습니다.", function(){
|
||||
location.href = "/mobilelogin/logout.do"
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("등록 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 디바이스 푸시 알림 여부 조회
|
||||
****************************************************************************/
|
||||
function fn_selectDevicePushYn(){
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobiledevice/selectDevicePushYn.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
|
||||
let autoPushYn = data.rows[0].autoPushYn;
|
||||
let marketingPushYn = data.rows[0].marketingPushYn;
|
||||
|
||||
if("Y" == autoPushYn){
|
||||
$("#autoPushYn").prop("checked", true);
|
||||
}else{
|
||||
$("#autoPushYn").prop("checked", false);
|
||||
}
|
||||
|
||||
if("Y" == marketingPushYn){
|
||||
$("#marketingPushYn").prop("checked", true);
|
||||
}else{
|
||||
$("#marketingPushYn").prop("checked", false);
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 디바이스 푸시 알림 여부 수정
|
||||
****************************************************************************/
|
||||
function fn_updateDevicePushYn(type, pushYn){
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("type", type);
|
||||
formData.append("pushYn", pushYn);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobiledevice/updateDevicePushYn.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("수정 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("수정 오류", "수정 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("수정 오류", "수정 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
//멤버십 포인트 조회
|
||||
fn_selectMembershipJson();
|
||||
|
||||
//main 높이값 - class
|
||||
if($('.notify_box').hasClass('open')){
|
||||
$('main').addClass('short');
|
||||
}else{
|
||||
$('main').addClass('short2');
|
||||
}
|
||||
|
||||
// 푸시 알림
|
||||
fn_selectDevicePushYn();
|
||||
|
||||
$("#autoPushYn").change(function(){
|
||||
let pushYn = "N";
|
||||
if($(this).is(":checked")){
|
||||
pushYn = "Y"
|
||||
}
|
||||
fn_updateDevicePushYn("auto", pushYn);
|
||||
});
|
||||
|
||||
$("#marketingPushYn").change(function(){
|
||||
let pushYn = "N";
|
||||
if($(this).is(":checked")){
|
||||
pushYn = "Y"
|
||||
}
|
||||
fn_updateDevicePushYn("marketing", pushYn);
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
// 아아디 keypress
|
||||
$(document).on('keypress', '#loginId', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 비밀번호 keypress
|
||||
$(document).on('keypress', '#password', function(e) {
|
||||
fn_enter(e);
|
||||
});
|
||||
|
||||
// 로그인 버튼
|
||||
$("#btnLogin").click(function () {
|
||||
fn_login();
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,136 @@
|
||||
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]공지사항 상세/수정 팝업
|
||||
작성일 : 2023. 01. 19.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023. 01. 19. NTsoft 최초 생성
|
||||
*/
|
||||
let mobileNoticeSelectModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#mobileNoticeSelectModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#mobileNoticeSelectModal .btnCancle').on("click", function(){
|
||||
mobileNoticeSelectModal.close();
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( mobileNoticeSelectModal.callback ) {
|
||||
mobileNoticeSelectModal.callback(checkedData);
|
||||
}
|
||||
mobileNoticeSelectModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
let muNoticeId = mobileNoticeSelectModal.reqParam.muNoticeId;
|
||||
|
||||
if(true != fn_emptyCheck(muNoticeId)){
|
||||
modalEvent.warning("조회", "공지사항 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muNoticeId", muNoticeId);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilenotice/selectNotice.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
$("#mobileNoticeSelectModal #modalTitle").text(data.rows[0].title);
|
||||
$("#mobileNoticeSelectModal #modalContent").empty().html(data.rows[0].content.replace(/\n/g,"<br/>"));
|
||||
$("#mobileNoticeSelectModal #writeDate").text(data.rows[0].writeDate);
|
||||
$("#mobileNoticeSelectModal #writeTime").text(data.rows[0].writeTime);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
mobileNoticeSelectModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
mobileNoticeSelectModal.callback = callback;
|
||||
mobileNoticeSelectModal.reqParam = reqParam;
|
||||
mobileNoticeSelectModal.dataList = null;
|
||||
|
||||
setTimeout(function(){
|
||||
$('#mobileNoticeSelectModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
mobileNoticeSelectModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#mobileNoticeSelectModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#mobileNoticeSelectModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div id="mobileNoticeSelectModal" class="modal notice_modal fade" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label" id="modalTitle"></p>
|
||||
<p>
|
||||
<span id="writeDate"></span>
|
||||
<span id="writeTime"></span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p id="modalContent"></p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="ok_btn btnCancle">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,83 @@
|
||||
let noticeSelectId = "";
|
||||
|
||||
/****************************************************************************
|
||||
* 공지사항 정보 리스트 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMobileNoticeJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilenotice/selectListNotice.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
$('.content_box ul').empty();
|
||||
if(0<data.totalCount){
|
||||
|
||||
data.rows.forEach((noticeData,index)=>{
|
||||
const innerHtml = ` <li onclick="fn_selectNoticePopup('${noticeData.muNoticeId}')">
|
||||
<p>${noticeData.title}</p>
|
||||
<p>${noticeData.writeDate}</p>
|
||||
</li>`;
|
||||
$('.content_box ul').append(innerHtml);
|
||||
});
|
||||
|
||||
} else {
|
||||
const innerHtml = `<li><p>공지사항이 없습니다</p></li>`;
|
||||
$('.content_box ul').append(innerHtml);
|
||||
}
|
||||
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fn_selectNoticePopup(param){
|
||||
let reqParam = {
|
||||
"muNoticeId" : param
|
||||
};
|
||||
|
||||
mobileNoticeSelectModal.popup(function(obj, reqParam) {
|
||||
fn_selectListMobileNoticeJson();
|
||||
}, reqParam);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
fn_selectListMobileNoticeJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
143
src/main/resources/static/js/mobile/push/popup/selectPushPop.js
Normal file
143
src/main/resources/static/js/mobile/push/popup/selectPushPop.js
Normal file
@@ -0,0 +1,143 @@
|
||||
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]공지사항 상세/수정 팝업
|
||||
작성일 : 2023. 01. 19.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023. 01. 19. NTsoft 최초 생성
|
||||
*/
|
||||
let mobilePushSelectModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#mobilePushSelectModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#mobilePushSelectModal .ok_btn').on("click", function(){
|
||||
mobilePushSelectModal.close();
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( mobilePushSelectModal.callback ) {
|
||||
mobilePushSelectModal.callback(checkedData);
|
||||
}
|
||||
mobilePushSelectModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
let muPushId = mobilePushSelectModal.reqParam.muPushId;
|
||||
|
||||
if(true != fn_emptyCheck(muPushId)){
|
||||
modalEvent.warning("조회", "알림 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muPushId", muPushId);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilepush/selectPush.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
$("#mobilePushSelectModal #modalTitle").text(data.rows[0].title);
|
||||
$("#mobilePushSelectModal #sendDate").text(data.rows[0].sendDate);
|
||||
$("#mobilePushSelectModal #sendTime").text(data.rows[0].sendTime);
|
||||
$("#mobilePushSelectModal #modalContent").empty().html(data.rows[0].content.replace(/\n/g,"<br/>"));
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
mobilePushSelectModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
mobilePushSelectModal.callback = callback;
|
||||
mobilePushSelectModal.reqParam = reqParam;
|
||||
mobilePushSelectModal.dataList = null;
|
||||
|
||||
setTimeout(function(){
|
||||
$('#mobilePushSelectModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
mobilePushSelectModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#mobilePushSelectModal').modal('hide');
|
||||
|
||||
if(mobilePushSelectModal.callback){
|
||||
mobilePushSelectModal.callback();
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
$('#mobilePushSelectModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal noticeSelect_modal fade" id="mobilePushSelectModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label" id="modalTitle">진료 접수 알림</p>
|
||||
<p>
|
||||
<span id="sendDate">2021-07-07</span>,
|
||||
<span id="sendTime">14:00</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p id="modalContent">
|
||||
OOO 님, 진료 접수가 완료 되었습니다.
|
||||
데스크에서 안내가 있을 때 까지 잠시만 기다려주세요!
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="ok_btn">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
121
src/main/resources/static/js/mobile/push/selectListPush.js
Normal file
121
src/main/resources/static/js/mobile/push/selectListPush.js
Normal file
@@ -0,0 +1,121 @@
|
||||
let pushSelectId = "";
|
||||
|
||||
/****************************************************************************
|
||||
* 공지사항 정보 리스트 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListMobilePushJson(){
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilepush/selectListPush.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
let listHTML = '';
|
||||
if(0<data.totalCount){
|
||||
listHTML += fn_pushListHTML(data.rows);
|
||||
}else {
|
||||
listHTML += '<div class="notify_box first">';
|
||||
listHTML += ' <div class="text_box">';
|
||||
listHTML += ' <p>알림이 없습니다</p>';
|
||||
listHTML += ' </div>';
|
||||
listHTML += '</div>';
|
||||
}
|
||||
|
||||
$("#pushList").empty().html(listHTML).trigger("create");
|
||||
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fn_pushListHTML(param){
|
||||
let listHTML = '';
|
||||
|
||||
for(let i=0; i<param.length; i++) {
|
||||
if(0==i){
|
||||
// 첫 번째 first
|
||||
listHTML += '<div class="notify_box first" onclick="fn_selectPushPopup(\''+param[i].muPushId+'\')">';
|
||||
}else{
|
||||
listHTML += '<div class="notify_box" onclick="fn_selectPushPopup(\''+param[i].muPushId+'\')">';
|
||||
}
|
||||
|
||||
// 날짜별 푸시 리스트
|
||||
if(true == fn_emptyCheck(param[i-1])){
|
||||
if(param[i].sendDate == param[i-1].sendDate){
|
||||
|
||||
}else{
|
||||
// 이전 데이터와 날짜가 같지 않으면
|
||||
listHTML += ' <p class="date">'+param[i].sendDate+'</p>';
|
||||
}
|
||||
}else{
|
||||
// 이전 데이터가 없으면
|
||||
listHTML += ' <p class="date">'+param[i].sendDate+'</p>';
|
||||
}
|
||||
if("N" == param[i].userCheckYn){
|
||||
// new : 새 알림에 new 넣어주기 -> 아이콘 옆에 빨간표시 때문
|
||||
listHTML += ' <div class="text_box new">';
|
||||
}else{
|
||||
listHTML += ' <div class="text_box">';
|
||||
}
|
||||
listHTML += ' <p class="label">'+param[i].title+'</p>';
|
||||
listHTML += ' <p>'+param[i].content+'</p>';
|
||||
listHTML += ' <p class="time">'+param[i].sendTime+'</p>';
|
||||
listHTML += ' </div>';
|
||||
listHTML += '</div>';
|
||||
}
|
||||
|
||||
return listHTML;
|
||||
}
|
||||
|
||||
function fn_selectPushPopup(param){
|
||||
let reqParam = {
|
||||
"muPushId" : param
|
||||
};
|
||||
|
||||
mobilePushSelectModal.popup(function(obj, reqParam) {
|
||||
fn_selectListMobilePushJson();
|
||||
}, reqParam);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
fn_selectListMobilePushJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,530 @@
|
||||
let date = new Date();
|
||||
let workTime = [];
|
||||
let holiday = [];
|
||||
let publicHolidayUseYn='';
|
||||
function getSelectedDateTime() {
|
||||
// 선택된 날짜
|
||||
const selectedDate = $('.dates .on').text();
|
||||
// 선택된 시간
|
||||
const selectedTime =$('.times button.on').text();
|
||||
// 선택된 진료
|
||||
const selectedClinic = $('.clinic_list button.on').text();
|
||||
// 선택된 시술
|
||||
const selectedProcedures = getSelectedProcedures();
|
||||
|
||||
if (selectedDate && selectedTime) {
|
||||
console.log('선택된 날짜:', selectedDate);
|
||||
console.log('선택된 시간:', selectedTime);
|
||||
return { date: selectedDate, time: selectedTime };
|
||||
} else {
|
||||
console.log('날짜 또는 시간이 선택되지 않았습니다.');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function getSelectedProcedures() {
|
||||
// 선택된 시술 체크박스 리스트 가져오기
|
||||
const selectedProcedures = [];
|
||||
document.querySelectorAll('input[name="reservation_list"]:checked').forEach(checkbox => {
|
||||
const procedureLabel = checkbox.nextElementSibling.textContent;
|
||||
selectedProcedures.push(procedureLabel);
|
||||
});
|
||||
|
||||
return selectedProcedures;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 진료 시간데이타 설정
|
||||
****************************************************************************/
|
||||
function fn_selectHospitalWorkTimeCombo() {
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilehospital/selectHospitalWorkTime.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data) {
|
||||
if ('0' == data.msgCode) {
|
||||
workTime = data.workTime[0];
|
||||
holiday = data.holiday;
|
||||
publicHolidayUseYn = data.workTime[0].publicHolidayUseYn;
|
||||
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fn_setWorkTime(){
|
||||
let selectDay = $('.dates .date.on');
|
||||
|
||||
let year = date.getFullYear();
|
||||
let month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
|
||||
if(selectDay)
|
||||
if (selectDay.hasClass('prev')) {
|
||||
// 이전 달 조회 시 월과 연도 조정
|
||||
month = ('0' + ((date.getMonth() + 1) - 1 || 12)).slice(-2); // 1월일 경우 12월로 설정
|
||||
if ((date.getMonth() + 1) === 1) year--; // 1월에서 이전 달은 전년도 12월
|
||||
} else if (selectDay.hasClass('next')) {
|
||||
// 다음 달 조회 시 월과 연도 조정
|
||||
month = ('0' + ((date.getMonth() + 1) + 1 > 12 ? 1 : (date.getMonth() + 1) + 1)).slice(-2); // 12월일 경우 다음 달은 1월
|
||||
if ((date.getMonth() + 1) === 12) year++; // 12월에서 다음 달은 다음 해 1월
|
||||
}
|
||||
|
||||
let day = $('.dates .date.on').text();
|
||||
let todayDate = `${year}.${month}.${day}`; // 조회할 날짜 형식
|
||||
let selectDate = new Date(year,month-1,day)
|
||||
let dayOfWeek = selectDate.getDay();
|
||||
|
||||
switch (dayOfWeek) {
|
||||
case 0 :
|
||||
dayOfWeek = 'sun'
|
||||
break;
|
||||
case 1 :
|
||||
dayOfWeek = 'mon'
|
||||
break;
|
||||
case 2 :
|
||||
dayOfWeek = 'tue'
|
||||
break;
|
||||
case 3 :
|
||||
dayOfWeek = 'wed'
|
||||
break;
|
||||
case 4 :
|
||||
dayOfWeek = 'thu'
|
||||
break;
|
||||
case 5 :
|
||||
dayOfWeek = 'fri'
|
||||
break;
|
||||
case 6 :
|
||||
dayOfWeek = 'sat'
|
||||
break;
|
||||
}
|
||||
|
||||
// 요일에 따라 진료 시간 가져오기
|
||||
let todayWorkStart = workTime[`${dayOfWeek}OpenStartTime`];
|
||||
let todayWorkEnd = workTime[`${dayOfWeek}OpenEndTime`];
|
||||
let todayHoliday = holiday.find(holidayData => holidayData.locDate === todayDate);
|
||||
|
||||
let timeHtml = fn_setWorkTimeValue(todayWorkStart,todayWorkEnd,selectDate)
|
||||
let workTimeContainer = $('.times'); // 진료 시간이 뿌려질 컨테이너
|
||||
workTimeContainer.empty(); // 기존 내용 제거
|
||||
|
||||
if (todayHoliday&&(('Y'===publicHolidayUseYn && 'publicHoliday'===todayHoliday.dateType)
|
||||
||'hospitalHoliday'===todayHoliday.dateType)) {
|
||||
// 공휴일 또는 휴무일 처리
|
||||
workTimeContainer.append(`<p>오늘은 휴무입니다.</p>`);
|
||||
} else{
|
||||
if (timeHtml) {
|
||||
// 진료 시간이 있으면 출력
|
||||
workTimeContainer.append(timeHtml);
|
||||
$('.times button').on('click', function(event) {
|
||||
$('.times button').removeClass('on');
|
||||
$(this).addClass('on');
|
||||
});
|
||||
}
|
||||
else{
|
||||
// 진료 시간이 없으면 기본 처리
|
||||
workTimeContainer.append(`<p>진료 시간이 없습니다.</p>`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fn_setWorkTimeValue(openStartTime, openEndTime,thisDate) {
|
||||
let timeHTML = '';
|
||||
const now = new Date(); // 현재 시간
|
||||
const currentHour = now.getHours(); // 현재 시간의 시간 값
|
||||
const currentMinutes = now.getMinutes(); // 현재 시간의 분 값
|
||||
|
||||
const startTime = parseInt(openStartTime.split(':')[0], 10);
|
||||
const endTime = parseInt(openEndTime.split(':')[0], 10);
|
||||
|
||||
// 선택된 날짜가 오늘인지 확인
|
||||
const isToday = thisDate.getDate() === now.getDate() &&
|
||||
thisDate.getMonth() === now.getMonth() &&
|
||||
thisDate.getFullYear() === now.getFullYear();
|
||||
|
||||
for (let i = startTime; i < endTime; i++) {
|
||||
let hour = ('0' + i).slice(-2);
|
||||
|
||||
// 오늘인 경우 현재 시간 이전 버튼 비활성화 또는 숨김 처리
|
||||
if (!isToday || (isToday && i > currentHour)) {
|
||||
timeHTML += `<button>${hour}:00</button>`;
|
||||
timeHTML += `<button>${hour}:30</button>`;
|
||||
} else if (isToday && i === currentHour) {
|
||||
// 현재 시간의 경우 30분 단위로 현재 분과 비교하여 생성
|
||||
if (currentMinutes < 30) {
|
||||
timeHTML += `<button>${hour}:30</button>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return timeHTML;
|
||||
}
|
||||
/****************************************************************************
|
||||
* 진료 콤보데이타 설정
|
||||
****************************************************************************/
|
||||
function fn_setTreatmentCombo(){
|
||||
let formData = new FormData();
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobiletreatment/selectListTreatmentOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
let innerHtml = '';
|
||||
let otherTreatmentIds = [];
|
||||
|
||||
if ('0' == data.msgCode) {
|
||||
const treatmentWrapper = $('.clinic_list');
|
||||
treatmentWrapper.empty();
|
||||
|
||||
if(0<data.rows.length){
|
||||
data.rows.forEach((treatmentData,index)=>{
|
||||
let className = (index === 0) ? 'first' : '';
|
||||
|
||||
let treatmentName = treatmentData.treatmentName;
|
||||
if (treatmentName !== '쁘띠' && treatmentName !== '피부' && treatmentName !== '비만') {
|
||||
otherTreatmentIds.push(treatmentData.muTreatmentId); // 기타 항목으로 분류
|
||||
} else {
|
||||
// 기타가 아닌 경우는 그대로 처리
|
||||
innerHtml = `<li class="${className}">
|
||||
<button class="treatment-button" data-muTreatmentId="${treatmentData.muTreatmentId}">${treatmentName}</button>
|
||||
</li>`;
|
||||
treatmentWrapper.append(innerHtml);
|
||||
}
|
||||
});
|
||||
|
||||
// "기타" 항목들이 있으면, 하나의 '기타' 항목으로 리스트에 추가
|
||||
if (otherTreatmentIds.length > 0) {
|
||||
innerHtml = `<li>
|
||||
<button class="treatment-button" data-muTreatmentId="${otherTreatmentIds.join(',')}">기타</button>
|
||||
</li>`;
|
||||
treatmentWrapper.append(innerHtml);
|
||||
}
|
||||
|
||||
$('.treatment-button').on('click', function() {
|
||||
let muTreatmentId = $(this).data('mutreatmentid'); // 버튼에서 muTreatmentId 가져오기
|
||||
fn_setTreatmentProcedureCombo(muTreatmentId); // 함수 호출
|
||||
});
|
||||
} else {
|
||||
innerHtml = `<li><span>진료항목이 없습니다.</span></li>`;
|
||||
treatmentWrapper.append(innerHtml);
|
||||
}
|
||||
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시 시도하십시오.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 예약등록
|
||||
****************************************************************************/
|
||||
function fn_insertReserveIntro(){
|
||||
let reserveYear = date.getFullYear();
|
||||
let reserveMonth = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
let selectDate = $('.dates .date.on');
|
||||
|
||||
if(selectDate)
|
||||
if (selectDate.hasClass('prev')) {
|
||||
// 이전 달 조회 시 월과 연도 조정
|
||||
reserveMonth = ('0' + ((date.getMonth() + 1) - 1 || 12)).slice(-2); // 1월일 경우 12월로 설정
|
||||
if ((date.getMonth() + 1) === 1) reserveYear--; // 1월에서 이전 달은 전년도 12월
|
||||
} else if (selectDate.hasClass('next')) {
|
||||
// 다음 달 조회 시 월과 연도 조정
|
||||
reserveMonth = ('0' + ((date.getMonth() + 1) + 1 > 12 ? 1 : (date.getMonth() + 1) + 1)).slice(-2); // 12월일 경우 다음 달은 1월
|
||||
if ((date.getMonth() + 1) === 12) reserveYear++; // 12월에서 다음 달은 다음 해 1월
|
||||
}
|
||||
|
||||
let reserveDay = ('0' + date.getDate()).slice(-2);
|
||||
let reserveDate = reserveYear + '-' + reserveMonth + '-' + reserveDay;
|
||||
let muProcedureId = '';
|
||||
let procedureName = '';
|
||||
|
||||
$('input[name="reservation_list"]:checked').each(function() {
|
||||
if(muProcedureId){
|
||||
muProcedureId+=', '+$(this).data("muprocedureid");
|
||||
}else{
|
||||
muProcedureId+=$(this).data("muprocedureid");
|
||||
}
|
||||
const procedure = $(this).siblings('label').text().trim();
|
||||
if(procedureName){
|
||||
procedureName+=', '+procedure;
|
||||
}else{
|
||||
procedureName+=procedure;
|
||||
}
|
||||
});
|
||||
|
||||
let reserveTime = $('.times .on').text();
|
||||
let muTreatmentId = $('.treatment-button.on').data('mutreatmentid');
|
||||
let treatmentName = $('.treatment-button.on').text();
|
||||
|
||||
let pagingParam = "?reserveDate=" + reserveDate;
|
||||
pagingParam += "&reserveTime="+reserveTime;
|
||||
pagingParam += "&muTreatmentId="+muTreatmentId;
|
||||
pagingParam += "&treatmentName="+treatmentName;
|
||||
pagingParam += "&muProcedureId="+muProcedureId;
|
||||
pagingParam += "&procedureName="+procedureName;
|
||||
|
||||
location.href = '/mobilereservation/selectReserveIntro.do'+pagingParam;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 시술 콤보데이타 설정
|
||||
****************************************************************************/
|
||||
function fn_setTreatmentProcedureCombo(param){
|
||||
let result = [];
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muTreatmentId",param)
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobiletreatmentprocedure/selectListTreatmentProcedureOption.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode) {
|
||||
const procedureWrapper = $('.reservation_list');
|
||||
procedureWrapper.empty();
|
||||
|
||||
if (0 < data.rows.length) {
|
||||
data.rows.forEach((procedureData, index) => {
|
||||
let className = (index === 0) ? 'first' : '';
|
||||
const innerHtml = `<li class="${className}">
|
||||
<input type="checkbox" id="checkbox${index + 1}" data-muProcedureId="${procedureData.muTreatmentProcedureId}" name="reservation_list">
|
||||
<label for="checkbox${index + 1}">${procedureData.treatmentProcedureName}</button>
|
||||
</li>`;
|
||||
procedureWrapper.append(innerHtml);
|
||||
});
|
||||
} else {
|
||||
const innerHtml = `<li><span>진료항목이 없습니다.</span></li>`;
|
||||
procedureWrapper.append(innerHtml);
|
||||
}
|
||||
}
|
||||
else if(data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 예약 캘린더 렌더링
|
||||
****************************************************************************/
|
||||
function fn_renderCalender(){
|
||||
const viewYear = date.getFullYear();
|
||||
const viewMonth = date.getMonth();
|
||||
|
||||
document.querySelector('.year').textContent = `${viewYear}`;
|
||||
document.querySelector('.month').textContent = `${viewMonth + 1}`;
|
||||
|
||||
//이전달 마지막날
|
||||
const prevLast = new Date(viewYear, viewMonth, 0);
|
||||
//이달 마지막날
|
||||
const thisLast = new Date(viewYear, viewMonth + 1, 0);
|
||||
|
||||
const PLDate = prevLast.getDate();
|
||||
const PLDay = prevLast.getDay();
|
||||
|
||||
const TLDate = thisLast.getDate();
|
||||
const TLDay = thisLast.getDay();
|
||||
|
||||
const prevDates = [];
|
||||
const thisDates = [...Array(TLDate + 1).keys()].slice(1);
|
||||
const nextDates = [];
|
||||
|
||||
if (PLDay !== 6) {
|
||||
for (let i = 0; i < PLDay + 1; i++) {
|
||||
prevDates.unshift(PLDate - i);
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 1; i < 7 - TLDay; i++) {
|
||||
nextDates.push(i);
|
||||
}
|
||||
|
||||
const dates = prevDates.concat(thisDates, nextDates);
|
||||
const firstDateIndex = dates.indexOf(1);
|
||||
const lastDateIndex = dates.lastIndexOf(TLDate);
|
||||
|
||||
const today = new Date(); // 오늘 날짜 가져오기
|
||||
const todayYear = today.getFullYear();
|
||||
const todayMonth = today.getMonth();
|
||||
const todayDate = today.getDate();
|
||||
|
||||
// 각 날짜에 클래스 추가 (이전 달, 이번 달, 다음 달)
|
||||
dates.forEach((date, i) => {
|
||||
let condition;
|
||||
|
||||
if (i < firstDateIndex) {
|
||||
condition = 'prev'; // 이전 달 날짜
|
||||
} else if (i >= firstDateIndex && i <= lastDateIndex) {
|
||||
condition = 'this'; // 이번 달 날짜
|
||||
} else {
|
||||
condition = 'next'; // 다음 달 날짜
|
||||
}
|
||||
|
||||
// 지난 날짜 확인 (이번 달의 현재 날짜 이전 날짜만)
|
||||
let isPastDate = (condition === 'this') &&
|
||||
((viewYear < todayYear) ||
|
||||
(viewYear === todayYear && viewMonth === todayMonth && date < todayDate));
|
||||
|
||||
// 지난 날짜일 경우 'past' 클래스를 추가
|
||||
if (isPastDate || viewYear < todayYear || (viewYear === todayYear && viewMonth < todayMonth)) {
|
||||
condition += ' past';
|
||||
}
|
||||
|
||||
dates[i] = `<div class="date ${condition}">${date}</div>`;
|
||||
});
|
||||
|
||||
document.querySelector('.dates').innerHTML = dates.join('');
|
||||
|
||||
// 오늘 날짜 강조
|
||||
if (viewMonth === todayMonth && viewYear === todayYear) {
|
||||
for (let date of document.querySelectorAll('.this')) {
|
||||
if (+date.innerText === todayDate) {
|
||||
date.classList.add('today');
|
||||
date.classList.add('on');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 지난 날짜 선택 불가 처리
|
||||
for (let pastDate of document.querySelectorAll('.past')) {
|
||||
pastDate.classList.add('disabled'); // 선택 불가 클래스를 추가
|
||||
pastDate.style.pointerEvents = 'none'; // 클릭 이벤트를 비활성화하여 선택할 수 없게 만듦
|
||||
}
|
||||
}
|
||||
|
||||
function checkAllFields(changeElement) {
|
||||
let selectedCheckboxes = $('input[name="reservation_list"]:checked').length;
|
||||
let date = $('.date.on').length;
|
||||
let time = $('.times .on').length;
|
||||
let treatment = $('.treatment-button.on').length;
|
||||
const completeButton = $('.button_box button');
|
||||
|
||||
if(selectedCheckboxes&&date&&time&&treatment){
|
||||
completeButton.addClass('active');
|
||||
completeButton.attr("disabled", false);
|
||||
}else {
|
||||
completeButton.removeClass('active')
|
||||
completeButton.attr("disabled", true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
fn_renderCalender();
|
||||
fn_setTreatmentCombo();
|
||||
fn_selectHospitalWorkTimeCombo();
|
||||
fn_setWorkTime();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
//이전달 조회
|
||||
$('.nav_btn.prev').on('click', function(event) {
|
||||
// 현재 달보다 이전 달로 이동하려고 할 때 이벤트 중지
|
||||
if (date.getMonth() <= new Date().getMonth() && date.getFullYear() <= new Date().getFullYear()) {
|
||||
return; // 현재 달보다 과거라면 동작하지 않음
|
||||
}
|
||||
|
||||
date.setMonth(date.getMonth() - 1);
|
||||
date.setDate(1); // 이전 달의 첫 번째 날짜로 설정
|
||||
fn_renderCalender(true); // skipTodayHighlight를 true로 설정하여 오늘 날짜 강조 건너뜀
|
||||
|
||||
// 현재 날짜와 선택한 날짜 비교
|
||||
const today = new Date();
|
||||
const selectedDate = new Date(date.getFullYear(), date.getMonth(), 1); // 선택한 달의 첫 번째 날짜
|
||||
|
||||
if (selectedDate >= today) {
|
||||
$('.date.this').first().addClass('on'); // 선택한 날짜가 현재 날짜 이상일 때만 'on' 클래스 추가
|
||||
}
|
||||
fn_setWorkTime(); // 선택 날짜에 맞춰 진료 시간 설정
|
||||
});
|
||||
|
||||
//다음달 조회
|
||||
$('.nav_btn.next').on('click', function(event) {
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
date.setDate(1); // 다음 달의 첫 번째 날짜로 설정
|
||||
fn_renderCalender(true); // skipTodayHighlight를 true로 설정하여 오늘 날짜 강조 건너뜀
|
||||
|
||||
$('.date.this').first().addClass('on'); // 첫 번째 날짜에 'on' 클래스 추가
|
||||
fn_setWorkTime(); // 선택 날짜에 맞춰 진료 시간 설정
|
||||
});
|
||||
|
||||
//진료 선택
|
||||
$('.clinic_list button').on('click', function() {
|
||||
// 모든 버튼에서 'on' 클래스 제거
|
||||
$('.clinic_list button').removeClass('on');
|
||||
|
||||
// 클릭한 버튼에 'on' 클래스 추가
|
||||
$(this).addClass('on');
|
||||
});
|
||||
|
||||
$('.calender_main').on('click','.date:not(.past)', function() {
|
||||
$('.date.on').removeClass('on');
|
||||
|
||||
$(this).addClass('on');
|
||||
const year = $('.year').text();
|
||||
const month = $('.month').text();
|
||||
const day = $('.date.on').text();
|
||||
date.setFullYear(year,month-1,day);
|
||||
fn_setWorkTime($(this));
|
||||
});
|
||||
|
||||
$('.date,.times,.treatment-button,.reservation_list').each(function () {
|
||||
$(this).on('click', ()=>checkAllFields($(this)));
|
||||
});
|
||||
|
||||
$('.next_btn').on('click', ()=>fn_insertReserveIntro());
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,123 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal] 접수 대기 상세 팝업
|
||||
작성일 : 2024. 10. 02.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024. 10. 02. NTsoft 최초 생성
|
||||
*/
|
||||
let selectPastReserveModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#selectPastReserveModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#selectPastReserveModal .btnCancle').on("click", function(){
|
||||
selectPastReserveModal.close();
|
||||
});
|
||||
},
|
||||
setData: function() {
|
||||
$('#selectPastReserveModal #userName').text(this.reqParam.userName);
|
||||
$('#selectPastReserveModal #waitingCount').text(this.reqParam.waitingCount || '0');
|
||||
$('#selectPastReserveModal #reserveDate').text(`${this.reqParam.reserveDate}, ${this.reqParam.reserveTime}`);
|
||||
$('#selectPastReserveModal #treatmentName').text(this.reqParam.treatmentName);
|
||||
$('#selectPastReserveModal #treatmentProcedureName').text(this.reqParam.treatmentProcedureName);
|
||||
$('#selectPastReserveModal #status').text(fn_setReserveStatus(this.reqParam.status));
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( selectPastReserveModal.callback ) {
|
||||
selectPastReserveModal.callback(checkedData);
|
||||
}
|
||||
selectPastReserveModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
selectPastReserveModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
selectPastReserveModal.callback = callback;
|
||||
selectPastReserveModal.reqParam = reqParam;
|
||||
selectPastReserveModal.dataList = null;
|
||||
|
||||
// 데이터 바인딩
|
||||
this.setData();
|
||||
setTimeout(function(){
|
||||
$('#selectPastReserveModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
selectPastReserveModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#selectPastReserveModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#selectPastReserveModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal past_promise_modal fade" id="selectPastReserveModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">
|
||||
안녕하세요 <span id="userName"></span>님!<br/>
|
||||
방문해주셔서 감사합니다.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<ul>
|
||||
<li class="first">
|
||||
<p class="label">예약 일시</p>
|
||||
<p id="reserveDate"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">예약 유형</p>
|
||||
<p id="treatmentName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">시술</p>
|
||||
<p id="treatmentProcedureName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">상태</p>
|
||||
<p class="blue" id="status"></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="close_btn btnCancle">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,128 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal] 접수 대기 상세 팝업
|
||||
작성일 : 2024. 10. 02.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024. 10. 02. NTsoft 최초 생성
|
||||
*/
|
||||
let selectPromiseCompletedModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#selectPromiseCompletedModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#selectPromiseCompletedModal .btnCancle').on("click", function(){
|
||||
selectPromiseCompletedModal.close();
|
||||
});
|
||||
},
|
||||
setData: function() {
|
||||
$('#selectPromiseCompletedModal #userName').text(this.reqParam.userName);
|
||||
$('#selectPromiseCompletedModal #waitingCount').text(this.reqParam.waitingCount || '0');
|
||||
$('#selectPromiseCompletedModal #reserveDate').text(`${this.reqParam.reserveDate}, ${this.reqParam.reserveTime}`);
|
||||
$('#selectPromiseCompletedModal #treatmentName').text(this.reqParam.treatmentName);
|
||||
$('#selectPromiseCompletedModal #treatmentProcedureName').text(this.reqParam.treatmentProcedureName);
|
||||
$('#selectPromiseCompletedModal #status').text(fn_setReserveStatus(this.reqParam.status));
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( selectPromiseCompletedModal.callback ) {
|
||||
selectPromiseCompletedModal.callback(checkedData);
|
||||
}
|
||||
selectPromiseCompletedModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
selectPromiseCompletedModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
selectPromiseCompletedModal.callback = callback;
|
||||
selectPromiseCompletedModal.reqParam = reqParam;
|
||||
selectPromiseCompletedModal.dataList = null;
|
||||
|
||||
// 데이터 바인딩
|
||||
this.setData();
|
||||
setTimeout(function(){
|
||||
$('#selectPromiseCompletedModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
selectPromiseCompletedModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#selectPromiseCompletedModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#selectPromiseCompletedModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal promise_completed_modal fade" id="selectPromiseCompletedModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">
|
||||
안녕하세요 <span id="userName"></span>님!<br/>
|
||||
방문해주셔서 감사합니다.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="text_box">
|
||||
<p>진료 대기 고객</p>
|
||||
<p class="blue" id="waitingCount"></p>
|
||||
<p>진료 접수가 완료되었습니다.<br/>진료 안내까지 잠시만 기다려주세요.</p>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="first">
|
||||
<p class="label">예약 일시</p>
|
||||
<p id="reserveDate"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">예약 유형</p>
|
||||
<p id="treatmentName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">시술</p>
|
||||
<p id="treatmentProcedureName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">상태</p>
|
||||
<p class="blue" id="status"></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="close_btn btnCancle">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,176 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal] 접수 대기 상세 팝업
|
||||
작성일 : 2024. 10. 02.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024. 10. 02. NTsoft 최초 생성
|
||||
*/
|
||||
let selectReservePendingModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#selectReservePendingModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#selectReservePendingModal .btnCancle').on("click", function(){
|
||||
selectReservePendingModal.close();
|
||||
});
|
||||
|
||||
$('#selectReservePendingModal .btnSave').on("click", function(){
|
||||
selectReservePendingModal.save();
|
||||
});
|
||||
},
|
||||
setData: function() {
|
||||
$('#selectReservePendingModal #userName').text(this.reqParam.userName);
|
||||
$('#selectReservePendingModal #reserveDate').text(`${this.reqParam.reserveDate}, ${this.reqParam.reserveTime}`);
|
||||
$('#selectReservePendingModal #treatmentName').text(this.reqParam.treatmentName);
|
||||
$('#selectReservePendingModal #treatmentProcedureName').text(this.reqParam.treatmentProcedureName);
|
||||
$('#selectReservePendingModal #status').text(fn_setReserveStatus(this.reqParam.status));
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( selectReservePendingModal.callback ) {
|
||||
selectReservePendingModal.callback(checkedData);
|
||||
}
|
||||
selectReservePendingModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
selectReservePendingModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
selectReservePendingModal.callback = callback;
|
||||
selectReservePendingModal.reqParam = reqParam;
|
||||
selectReservePendingModal.dataList = null;
|
||||
|
||||
// 데이터 바인딩
|
||||
this.setData();
|
||||
setTimeout(function(){
|
||||
$('#selectReservePendingModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
selectReservePendingModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
save:function() {
|
||||
let muReserveId = selectReservePendingModal.reqParam.muReserveId;
|
||||
|
||||
if(true != fn_emptyCheck(muReserveId)){
|
||||
modalEvent.warning("수정", "예약 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
modalEvent.info("수정", "예약을 취소하시겠습니까?", function(){
|
||||
let formData = new FormData();
|
||||
formData.append("muReserveId", muReserveId);
|
||||
formData.append("status", 'TN');
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilereservation/updateReserveStatus.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
modalEvent.success("수정 성공", data.msgDesc, function(){
|
||||
if( selectReservePendingModal.callback ) {
|
||||
selectReservePendingModal.callback();
|
||||
}
|
||||
selectReservePendingModal.close();
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("예약취소 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("예약취소 오류", "취소 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#selectReservePendingModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#selectReservePendingModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal promise_pending_modal fade" id="selectReservePendingModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">
|
||||
안녕하세요 <span id="userName"></span>님!<br/>
|
||||
방문해주셔서 감사합니다.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<ul>
|
||||
<li class="first">
|
||||
<p class="label">예약 일시</p>
|
||||
<p id="reserveDate"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">예약 유형</p>
|
||||
<p id="treatmentName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">시술</p>
|
||||
<p id="treatmentProcedureName"></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">상태</p>
|
||||
<p class="blue" id="status"></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="cancel_btn btnSave">예약 취소</button>
|
||||
<button class="ok_btn btnCancle">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,76 @@
|
||||
/****************************************************************************
|
||||
* 페이지 데이터 렌더링
|
||||
****************************************************************************/
|
||||
function fn_setReserveData(){
|
||||
$('#reserveDate').text(`${reserveDate}, ${reserveTime}`);
|
||||
$('#treatmentName').text(treatmentName);
|
||||
$('#procedureName').text(procedureName);
|
||||
}
|
||||
/****************************************************************************
|
||||
* 예약 등록
|
||||
****************************************************************************/
|
||||
function fn_insertReserve(){
|
||||
let etc = $('textarea').val();
|
||||
let formData = new FormData();
|
||||
formData.append("reserveDate",reserveDate)
|
||||
formData.append("reserveTime",reserveTime)
|
||||
formData.append("muTreatmentId",muTreatmentId)
|
||||
formData.append("treatmentName",treatmentName)
|
||||
formData.append("muProcedureId",muProcedureId)
|
||||
formData.append("procedureName",procedureName)
|
||||
formData.append("etc",etc)
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilereservation/insertReserve.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
const param = {
|
||||
|
||||
}
|
||||
if('0'==data.msgCode) {
|
||||
modalEvent.success("등록 성공","예약이 완료되었습니다.", function(){
|
||||
location.href ='/reservation'
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
fn_setReserveData();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
$('.next_btn').on('click', ()=>fn_insertReserve());
|
||||
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,279 @@
|
||||
/****************************************************************************
|
||||
* 예약내역 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListReservationJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilereservation/selectListReservation.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
const presentWrapper = $('.present_reservation');
|
||||
presentWrapper.empty();
|
||||
if(0<data.totalCount){
|
||||
let innerHtml = '<p class="title">예약 내역</p>';
|
||||
data.rows.forEach((reserveData,index)=>{
|
||||
const data = JSON.stringify(reserveData)
|
||||
if('R'===reserveData.status) {
|
||||
innerHtml+=`<div class="reservation_box promise_completed" onclick=fn_selectPromiseCompletedPopup(${JSON.stringify(reserveData)})><!-- promise_completed : 접수완료 box -->
|
||||
<div class="left_box">
|
||||
<p class="date">${reserveData.reserveDate}</p>
|
||||
<p>${reserveData.reserveTime} ${reserveData.treatmentName}-${reserveData.treatmentProcedureName} 예약</p>
|
||||
</div>
|
||||
<div class="right_box">
|
||||
<p>진료대기고객</p>
|
||||
<p>${reserveData.waitingCount}명</p>
|
||||
</div>
|
||||
</div>`
|
||||
}else{
|
||||
innerHtml+=`<div class="reservation_box promise_pending" onclick=${'T'===reserveData.status}?fn_selectReservePendingPopup(${data}):fn_selectPastReservePopup(${data})><!-- promise_pending : 접수대기 box -->
|
||||
<div class="left_box">
|
||||
<p class="date">${reserveData.reserveDate}</p>
|
||||
<p>${reserveData.reserveTime} ${reserveData.treatmentName}-${reserveData.treatmentProcedureName} 예약</p>
|
||||
</div>
|
||||
<div class="right_box">
|
||||
<p>상태</p>
|
||||
<p>${fn_setReserveStatus(reserveData.status)}</p>
|
||||
</div>
|
||||
</div>`
|
||||
}
|
||||
})
|
||||
presentWrapper.append(innerHtml)
|
||||
} else {
|
||||
const innerHtml = '<p class="title">예약 내역</p>' +
|
||||
'<div style="padding: 15px 20px; margin-top: 10px;"><span>예약내역이 없습니다.</span></div>';
|
||||
presentWrapper.append(innerHtml);
|
||||
presentWrapper.hide();
|
||||
}
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 지난 예약 내역 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListReservationHistoryJson(){
|
||||
let formData = new FormData();
|
||||
formData.append('searchDate',searchDate)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilereservation/selectListReservationHistory.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
$('.past_reservation .reservation_box').remove();
|
||||
const pastWrapper = $('.past_reservation');
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.totalCount){
|
||||
data.rows.forEach((reserveData,index)=>{
|
||||
const innerHtml =`<div class="reservation_box past_promise" onclick=fn_selectPastReservePopup(${JSON.stringify(reserveData)})><!-- past_promise : 진료끝 box -->
|
||||
<div class="left_box">
|
||||
<p class="date">${reserveData.reserveDate}</p>
|
||||
<p>${reserveData.reserveTime} ${reserveData.treatmentName}-${reserveData.treatmentProcedureName} 예약</p>
|
||||
</div>
|
||||
<div class="right_box">
|
||||
<p>${fn_setReserveStatus(reserveData.status)}</p>
|
||||
</div>
|
||||
</div>`
|
||||
pastWrapper.append(innerHtml)
|
||||
})
|
||||
|
||||
}else{
|
||||
const innerHtml = '<div class="reservation_box" style="border: none; padding: 15px 20px; margin-top: 10px;"><span>조회결과가 없습니다.</span></div>';
|
||||
pastWrapper.append(innerHtml)
|
||||
}
|
||||
} else if (data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 접수 대기 상세 팝업
|
||||
****************************************************************************/
|
||||
function fn_selectReservePendingPopup(param){
|
||||
selectReservePendingModal.popup(function (obj, param) {
|
||||
fn_selectListReservationJson();
|
||||
}, param);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 진료끝 상세 팝업
|
||||
****************************************************************************/
|
||||
function fn_selectPastReservePopup(param){
|
||||
selectPastReserveModal.popup(function (obj, param) {
|
||||
fn_selectListReservationJson();
|
||||
}, param);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 접수 완료 상세 팝업
|
||||
****************************************************************************/
|
||||
function fn_selectPromiseCompletedPopup(param){
|
||||
selectPromiseCompletedModal.popup(function (obj, param) {
|
||||
fn_selectListReservationJson();
|
||||
}, param);
|
||||
}
|
||||
/****************************************************************************
|
||||
* 예약상태 표시
|
||||
****************************************************************************/
|
||||
function fn_setReserveStatus(param){
|
||||
switch (param) {
|
||||
case 'T':
|
||||
return '예약';
|
||||
case 'TN':
|
||||
return '예약취소';
|
||||
case 'R':
|
||||
return '접수';
|
||||
case 'RN':
|
||||
return '접수취소';
|
||||
case 'G':
|
||||
return '진료중';
|
||||
case 'Y':
|
||||
return '진료끝';
|
||||
default:
|
||||
return '알 수 없는 상태'; // 예상치 못한 코드에 대한 처리
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색하기
|
||||
****************************************************************************/
|
||||
function fn_ReservationHistorySearch(param){
|
||||
fn_selectListReservationHistoryJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
if($('.notify_box').hasClass('open')){
|
||||
$('main').addClass('short');
|
||||
}else{
|
||||
$('main').addClass('short2');
|
||||
}
|
||||
|
||||
if(isMobile.Android()){
|
||||
// 안드로이드
|
||||
let value;
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").click(function(e){
|
||||
e.preventDefault();
|
||||
value = prompt("monthPicker");
|
||||
|
||||
if(null === value || !value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
|
||||
}else{
|
||||
let valueArr = value.split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
searchDate = year+"-"+month;
|
||||
$(this).val(searchDate);
|
||||
|
||||
fn_ReservationHistorySearch();
|
||||
});
|
||||
|
||||
}else if(isMobile.IOS()){
|
||||
// IOS
|
||||
let value; /**/
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").change(function(){
|
||||
value = $(this).val();
|
||||
if(!value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
}else{
|
||||
let valueArr = $(this).val().split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
searchDate = year+"-"+month;
|
||||
$(this).val(searchDate);
|
||||
|
||||
fn_ReservationHistorySearch();
|
||||
});
|
||||
}
|
||||
|
||||
if(searchDate){
|
||||
$("#mmDatepicker").val(searchDate)
|
||||
}else{
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
let year = toDate.getFullYear();
|
||||
let month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
$("#mmDatepicker").val(year+'-'+month);
|
||||
|
||||
searchDate = year+'-'+month;
|
||||
}
|
||||
|
||||
//예약내역조회
|
||||
fn_selectListReservationJson();
|
||||
//지난예약조회
|
||||
fn_ReservationHistorySearch();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
14
src/main/resources/static/js/mobile/swiper-bundle.min.js
vendored
Normal file
14
src/main/resources/static/js/mobile/swiper-bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
21
src/main/resources/static/js/mobile/swiper.js
Normal file
21
src/main/resources/static/js/mobile/swiper.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const swiper = new Swiper('.swiper', {
|
||||
// Optional parameters
|
||||
direction: 'vertical',
|
||||
loop: true,
|
||||
|
||||
// If we need pagination
|
||||
pagination: {
|
||||
el: '.swiper-pagination',
|
||||
},
|
||||
|
||||
// Navigation arrows
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev',
|
||||
},
|
||||
|
||||
// And if we need scrollbar
|
||||
scrollbar: {
|
||||
el: '.swiper-scrollbar',
|
||||
},
|
||||
});
|
||||
367
src/main/resources/static/js/mobile/user/popup/updateEmailPop.js
Normal file
367
src/main/resources/static/js/mobile/user/popup/updateEmailPop.js
Normal file
@@ -0,0 +1,367 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]공지사항 상세/수정 팝업
|
||||
작성일 : 2023. 01. 19.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023. 01. 19. NTsoft 최초 생성
|
||||
*/
|
||||
|
||||
// let timer;
|
||||
let isRunning = false;
|
||||
|
||||
let phoneAuthYn = "N";
|
||||
|
||||
let updateEmailModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#updateEmailModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#updateEmailModal .btnCancle').on("click", function(){
|
||||
updateEmailModal.close();
|
||||
});
|
||||
|
||||
$('#updateEmailModal .btnSave').on("click", function(){
|
||||
updateEmailModal.save("I");
|
||||
});
|
||||
|
||||
$("#updateEmailModal #modalOpenDate").datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM-DD',
|
||||
defaultDate: moment()
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( updateEmailModal.callback ) {
|
||||
updateEmailModal.callback(checkedData);
|
||||
}
|
||||
updateEmailModal.close();
|
||||
},
|
||||
//저장
|
||||
save:function(state) {
|
||||
let email = $("#updateEmailModal #email").val();
|
||||
let phoneNumber = $("#updateEmailModal #phoneNumber").val();
|
||||
let authNumber = $("#updateEmailModal #authNumber").val();
|
||||
let reg_email = /^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
// if(true != fn_emptyCheck(email)){
|
||||
// modalEvent.warning("수정", "이메일을 입력하세요.");
|
||||
// return;
|
||||
// }else{
|
||||
// if(!reg_email.test(email)) {
|
||||
// modalEvent.warning("수정", "이메일 형식에 맞게 입력해주세요.");
|
||||
// return;
|
||||
// }else if(true != fn_lengthCheck(email, 255)) {
|
||||
// modalEvent.warning("수정", "이메일은 255자를 넘을 수 없습니다.");
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("수정", "휴대폰번호를 입력해주세요.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("수정", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
phoneNumber = phoneNumber.replace("-", "");
|
||||
}
|
||||
}
|
||||
if(phoneAuthYn === "Y"){
|
||||
|
||||
if(true !== fn_emptyCheck(authNumber)){
|
||||
modalEvent.warning("수정", "인증번호는 필수 입력정보 입니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
modalEvent.info("수정", "휴대폰 번호를 수정하시겠습니까?", function(){
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("email", email);
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authNumber", authNumber);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuser/updateEmail.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
|
||||
let msgDesc = data.msgDesc;
|
||||
modalEvent.success("", "휴대폰 번호가 수정되었습니다.", function(){
|
||||
if( updateEmailModal.callback ) {
|
||||
updateEmailModal.callback();
|
||||
}
|
||||
updateEmailModal.close();
|
||||
});
|
||||
|
||||
}else{
|
||||
modalEvent.danger("", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}else{
|
||||
modalEvent.warning("수정", "휴대폰 인증을 진행하세요.");
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
updateEmailModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
updateEmailModal.callback = callback;
|
||||
updateEmailModal.reqParam = reqParam;
|
||||
updateEmailModal.dataList = null;
|
||||
|
||||
setTimeout(function(){
|
||||
$('#updateEmailModal').modal('show')
|
||||
}, 200);
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#updateEmailModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#updateEmailModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal myInfo_modal fade" id="updateEmailModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">휴대폰 번호 수정</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<ul>
|
||||
<li class="label">휴대폰 번호</li>
|
||||
<li class="ipbt">
|
||||
<input id="phoneNumber" type="tel" placeholder="-없이 번호 입력">
|
||||
<button id="sendAuthNumBtn" onClick="fn_sendAuthNum()">인증번호 발송</button>
|
||||
</li>
|
||||
<li class="ipbt">
|
||||
<input id="authNumber" type="password" placeholder="인증번호 입력">
|
||||
<button id="authNumBtn" onClick="fn_selectPhoneAuthCheck()">인증번호 확인</button>
|
||||
</li>
|
||||
<p id="timer" style="color: #3985EA;padding: 10px;margin: auto;"></p>
|
||||
<li class="label" style="display:none;">이메일</li>
|
||||
<li style="display:none;"><input id="email" type="email" placeholder="e-mail@mail.com"></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="close_btn btnCancle">닫기</button>
|
||||
<button class="save_btn btnSave">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 발송
|
||||
****************************************************************************/
|
||||
function fn_sendAuthNum(){
|
||||
|
||||
let phoneNumber = $("#updateEmailModal #phoneNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호를 입력하세요.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
// 인증번호 발송
|
||||
fn_insertPhoneAuth();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 등록
|
||||
****************************************************************************/
|
||||
function fn_insertPhoneAuth(){
|
||||
|
||||
isRunning = false;
|
||||
|
||||
let phoneNumber = $("#updateEmailModal #phoneNumber").val();
|
||||
let authType = "EM";
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authType", authType);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
|
||||
modalEvent.success("", data.msgDesc, function(){
|
||||
isRunning = true;
|
||||
|
||||
fn_startTimer();
|
||||
$("#sendAuthNumBtn").text("재전송");
|
||||
$(".certification_box2").show();
|
||||
});
|
||||
|
||||
}else{
|
||||
modalEvent.danger("", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 타이머 함수 실행
|
||||
****************************************************************************/
|
||||
function fn_startTimer() {
|
||||
|
||||
// 남은 시간(초)
|
||||
let count = 180;
|
||||
let display = document.querySelector('#timer');
|
||||
|
||||
let minutes, seconds;
|
||||
let timer = setInterval(function () {
|
||||
if(isRunning){
|
||||
minutes = parseInt(count / 60, 10);
|
||||
seconds = parseInt(count % 60, 10);
|
||||
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||
seconds = seconds < 10 ? "0" + seconds : seconds;
|
||||
display.textContent = "유효시간 " + minutes + ":" + seconds;
|
||||
isRunning = true;
|
||||
}else{
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
// 타이머 종료
|
||||
if (--count < 0) {
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
$("#authNumber").val("");
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 확인 조회
|
||||
****************************************************************************/
|
||||
function fn_selectPhoneAuthCheck(){
|
||||
|
||||
let phoneNumber = $("#updateEmailModal #phoneNumber").val();
|
||||
let authNumber = $("#authNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호는 필수 값입니다.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
phoneNumber = phoneNumber.replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(authNumber)){
|
||||
modalEvent.warning("조회", "인증번호를 입력하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authNumber", authNumber);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
modalEvent.success("", data.msgDesc);
|
||||
phoneAuthYn = "Y";
|
||||
clearInterval(timer);
|
||||
isRunning = false;
|
||||
|
||||
}else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
phoneAuthYn = "N";
|
||||
$("#insertUserBtn").attr("disabled", true);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
phoneAuthYn = "N";
|
||||
$(".btn-right").attr("disabled", true);
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]공지사항 상세/수정 팝업
|
||||
작성일 : 2023. 01. 19.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023. 01. 19. NTsoft 최초 생성
|
||||
*/
|
||||
let updatePasswordModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#updatePasswordModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#updatePasswordModal .btnCancle').on("click", function(){
|
||||
updatePasswordModal.close();
|
||||
});
|
||||
|
||||
$('#updatePasswordModal .btnSave').on("click", function(){
|
||||
updatePasswordModal.save("I");
|
||||
});
|
||||
|
||||
$("#updatePasswordModal #modalOpenDate").datetimepicker({
|
||||
allowInputToggle: true,
|
||||
format: 'YYYY-MM-DD',
|
||||
defaultDate: moment()
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( updatePasswordModal.callback ) {
|
||||
updatePasswordModal.callback(checkedData);
|
||||
}
|
||||
updatePasswordModal.close();
|
||||
},
|
||||
//저장
|
||||
save:function(state) {
|
||||
let currentPassword = $("#updatePasswordModal #currentPassword").val();
|
||||
let newPassword = $("#updatePasswordModal #newPassword").val();
|
||||
let confirmNewPassword = $("#updatePasswordModal #confirmNewPassword").val();
|
||||
|
||||
let reg_password = /^(?=.*[a-zA-Z])((?=.*\d)(?=.*\W)).{8,20}$/;
|
||||
|
||||
if(true != fn_emptyCheck(currentPassword)) {
|
||||
modalEvent.warning("수정", "기존 비밀번호를 입력하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(newPassword)) {
|
||||
modalEvent.warning("수정", "새 비밀번호를 입력하세요");
|
||||
return;
|
||||
}
|
||||
else if(!reg_password.test(newPassword)){
|
||||
modalEvent.warning("수정", "비밀번호는 숫자,영문,특수문자 조합 최소 8자리 최대 20자리로 입력해야합니다");
|
||||
return;
|
||||
}
|
||||
else{
|
||||
if(true != fn_lengthCheck(newPassword, 100)) {
|
||||
modalEvent.warning("수정", "비밀번호 정보는 100자를 넘을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(confirmNewPassword)) {
|
||||
modalEvent.warning("수정", "새 비밀번호 확인을 입력하세요");
|
||||
return;
|
||||
}
|
||||
else if(!reg_password.test(confirmNewPassword)){
|
||||
modalEvent.warning("수정", "비밀번호 확인은 숫자,영문,특수문자 조합 최소 8자리 최대 20자리로 입력해야합니다");
|
||||
return;
|
||||
}
|
||||
else{
|
||||
if(true != fn_lengthCheck(confirmNewPassword, 100)) {
|
||||
modalEvent.warning("수정", "비밀번호 확인 정보는 100자를 넘을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
modalEvent.info("수정", "비밀번호를 수정하시겠습니까?", function(){
|
||||
let formData = new FormData();
|
||||
formData.append("currentPassword", currentPassword);
|
||||
formData.append("newPassword", newPassword);
|
||||
formData.append("confirmNewPassword", confirmNewPassword);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuser/updatePassword.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
modalEvent.success("수정 성공", data.msgDesc, function(){
|
||||
if( updatePasswordModal.callback ) {
|
||||
updatePasswordModal.callback();
|
||||
}
|
||||
updatePasswordModal.close();
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("수정 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("수정 오류", "수정 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
updatePasswordModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
updatePasswordModal.callback = callback;
|
||||
updatePasswordModal.reqParam = reqParam;
|
||||
updatePasswordModal.dataList = null;
|
||||
|
||||
setTimeout(function(){
|
||||
$('#updatePasswordModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#updatePasswordModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#updatePasswordModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal password_modal fade" id="updatePasswordModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label">비밀번호 변경</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<ul>
|
||||
<li class="label">기존 비밀번호</li>
|
||||
<li><input id="currentPassword" type="password" placeholder="기존 비밀번호를 입력해주세요."></li>
|
||||
<li class="label">새로운 비밀번호</li>
|
||||
<li><input id="newPassword" type="password" placeholder="변경할 비밀번호를 입력해주세요."></li>
|
||||
<li><input id="confirmNewPassword" type="password" placeholder="비밀번호 재확인"></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="close_btn btnCancle">닫기</button>
|
||||
<button class="save_btn btnSave">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
133
src/main/resources/static/js/mobile/user/selectUserAccount.js
Normal file
133
src/main/resources/static/js/mobile/user/selectUserAccount.js
Normal file
@@ -0,0 +1,133 @@
|
||||
/****************************************************************************
|
||||
* 계정정보 조회
|
||||
****************************************************************************/
|
||||
function fn_selectUserAccountJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuser/selectUserAccount.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.rows.length){
|
||||
const accountData = data.rows[0];
|
||||
$("#membershipAccount").text(accountData.membershipAccount||'');
|
||||
$("#loginType").text(accountData.loginType);
|
||||
$("#phoneNumber").text(accountData.phoneNumber||'');
|
||||
$("#email").text(accountData.email||'');
|
||||
$("#introUserName").text(accountData.introUserName||'');
|
||||
}else{
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 회원탈퇴
|
||||
****************************************************************************/
|
||||
function fn_deleteUser(){
|
||||
modalEvent.info("삭제", "앱 탈퇴를 진행하시겠습니까?", function(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilelogin/deleteUser.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
modalEvent.success("성공", "탈퇴가 완료되었습니다.", function(){
|
||||
location.href = "/mobilelogin/logout.do"
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("등록 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 비밀번호 변경 모달
|
||||
****************************************************************************/
|
||||
function fn_updatePasswordModal(){
|
||||
let param = {};
|
||||
updatePasswordModal.popup(function(obj, reqParam) {
|
||||
fn_selectUserAccountJson();
|
||||
}, param);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 이메일 변경 모달
|
||||
****************************************************************************/
|
||||
function fn_updateEmailModal(){
|
||||
let param = {};
|
||||
updateEmailModal.popup(function(obj, reqParam) {
|
||||
fn_selectUserAccountJson();
|
||||
}, param);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
//계정정보 조회
|
||||
fn_selectUserAccountJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
|
||||
$('#mmDatepicker').on('dp.change', function(){
|
||||
fn_membershipChargeSearch();
|
||||
});
|
||||
|
||||
$(".button_box button").on('click', function(){
|
||||
$(".button_box .on").removeClass('on');
|
||||
$(this).addClass('on');
|
||||
fn_membershipChargeSearch();
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
273
src/main/resources/static/js/mobile/user/selectUserId.js
Normal file
273
src/main/resources/static/js/mobile/user/selectUserId.js
Normal file
@@ -0,0 +1,273 @@
|
||||
let isRunning = false;
|
||||
let phoneAuthYn = "N";
|
||||
|
||||
let userData = {};
|
||||
let certCellFlag = "N";
|
||||
let num = 60 * 3; // 몇분을 설정할지의 대한 변수 선언
|
||||
let myVar;
|
||||
let duplicateSuccess = false;
|
||||
|
||||
/****************************************************************************
|
||||
* 완료버튼
|
||||
****************************************************************************/
|
||||
function fn_selectUserId() {
|
||||
let userName = $("#userName").val();
|
||||
let phoneNumber = $("#phoneNumber").val().replace(/-/g, "");
|
||||
|
||||
if (true != fn_emptyCheck(userName)) {
|
||||
modalEvent.warning("등록", "성함이 없습니다.");
|
||||
return;
|
||||
}
|
||||
if (true != fn_emptyCheck(phoneNumber)) {
|
||||
modalEvent.warning("등록", "휴대폰번호가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ('Y' !== phoneAuthYn) {
|
||||
modalEvent.warning("등록", "휴대폰인증을 진행하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
// 폼을 동적으로 생성하여 전송
|
||||
let newForm = $("<form></form>");
|
||||
newForm.attr("name", "submitForm");
|
||||
newForm.attr("method", "POST");
|
||||
newForm.attr("action", encodeURI('/mobileuser/selectUserId.do')); // 대상 URL 설정
|
||||
|
||||
// 입력된 데이터 추가
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'userName', value: userName }));
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'phoneNumber', value: phoneNumber }));
|
||||
|
||||
// 페이지에 폼 추가 및 제출
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 휴대폰 본인인증
|
||||
****************************************************************************/
|
||||
function fn_sendAuthNum(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호를 입력하세요.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
// 인증번호 발송
|
||||
fn_insertPhoneAuth();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 등록
|
||||
****************************************************************************/
|
||||
function fn_insertPhoneAuth(){
|
||||
|
||||
isRunning = false;
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authType = "ID";
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authType", authType);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
|
||||
modalEvent.success("", data.msgDesc, function(){
|
||||
isRunning = true;
|
||||
|
||||
fn_startTimer();
|
||||
$("#sendAuthNumBtn").text("재전송");
|
||||
$(".certification_box2").show();
|
||||
});
|
||||
|
||||
}else{
|
||||
modalEvent.danger("", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 타이머 함수 실행
|
||||
****************************************************************************/
|
||||
function fn_startTimer() {
|
||||
|
||||
// 남은 시간(초)
|
||||
let count = 180;
|
||||
let display = document.querySelector('#timer');
|
||||
|
||||
let minutes, seconds;
|
||||
let timer = setInterval(function () {
|
||||
if(isRunning){
|
||||
minutes = parseInt(count / 60, 10);
|
||||
seconds = parseInt(count % 60, 10);
|
||||
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||
seconds = seconds < 10 ? "0" + seconds : seconds;
|
||||
display.textContent = "유효시간 " + minutes + ":" + seconds;
|
||||
isRunning = true;
|
||||
}else{
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
// 타이머 종료
|
||||
if (--count < 0) {
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
$("#authNumber").val("");
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 확인 조회
|
||||
****************************************************************************/
|
||||
function fn_selectPhoneAuthCheck(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authNumber = $("#authNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호는 필수 값입니다.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
phoneNumber = phoneNumber.replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(authNumber)){
|
||||
modalEvent.warning("조회", "인증번호를 입력하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authNumber", authNumber);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
modalEvent.success("", data.msgDesc, function (){
|
||||
$(".certification_box2").hide();
|
||||
});
|
||||
phoneAuthYn = "Y";
|
||||
clearInterval(timer);
|
||||
isRunning = false;
|
||||
|
||||
// checkAllFields();
|
||||
|
||||
const completeButton = $('.button_box button');
|
||||
|
||||
completeButton.addClass('active');
|
||||
completeButton.attr("disabled", false);
|
||||
}else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
phoneAuthYn = "N";
|
||||
// checkAllFields();
|
||||
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
phoneAuthYn = "N";
|
||||
// checkAllFields();
|
||||
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alertFunc() {
|
||||
var min = num / 60;
|
||||
min = Math.floor(min);
|
||||
|
||||
var sec = num - (60 * min);
|
||||
sec = sec > 9 ? sec : "0"+sec ;
|
||||
|
||||
if(num == 0){
|
||||
certCellFlag = "T";
|
||||
clearInterval(myVar) // num 이 0초가 되었을대 clearInterval로 타이머 종료
|
||||
}
|
||||
num--;
|
||||
}
|
||||
|
||||
function fn_errorMsgPop(){
|
||||
modalEvent.warning('오류',errorMsg)
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit() {
|
||||
if(errorMsg){
|
||||
fn_errorMsgPop()
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent() {
|
||||
// 다음버튼
|
||||
$("#btn_selectUserId").click(function () {
|
||||
fn_selectUserId();
|
||||
});
|
||||
|
||||
$("#back_btn").click(function () {
|
||||
location.href='/mobile'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(function () {
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
287
src/main/resources/static/js/mobile/user/selectUserPassword.js
Normal file
287
src/main/resources/static/js/mobile/user/selectUserPassword.js
Normal file
@@ -0,0 +1,287 @@
|
||||
let isRunning = false;
|
||||
let phoneAuthYn = "N";
|
||||
|
||||
let certCellFlag = "N";
|
||||
let num = 60 * 3; // 몇분을 설정할지의 대한 변수 선언
|
||||
let myVar;
|
||||
|
||||
/****************************************************************************
|
||||
* 다음 버튼(휴대폰인증페이지 이동)
|
||||
****************************************************************************/
|
||||
function fn_selectUserPhoneNumber() {
|
||||
let membershipAccount = $("#membershipAccount").val();
|
||||
|
||||
if (true != fn_emptyCheck(membershipAccount)) {
|
||||
modalEvent.warning("등록", "아이디가 없습니다.");
|
||||
return;
|
||||
}
|
||||
// 폼을 동적으로 생성하여 전송
|
||||
let newForm = $("<form></form>");
|
||||
newForm.attr("name", "submitForm");
|
||||
newForm.attr("method", "POST");
|
||||
newForm.attr("action", encodeURI('/mobileuser/selectUserPhoneNumber.do')); // 대상 URL 설정
|
||||
|
||||
// 입력된 데이터 추가
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'membershipAccount', value: membershipAccount }));
|
||||
|
||||
// 페이지에 폼 추가 및 제출
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 완료버튼 -비밀번호 재설정페이지 이동
|
||||
****************************************************************************/
|
||||
function fn_updateUserPasswordIntro() {
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
if(userPhoneNumber!==phoneNumber){
|
||||
modalEvent.warning("등록", "등록된 휴대폰번호가 아닙니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ('Y' !== phoneAuthYn) {
|
||||
modalEvent.warning("등록", "휴대폰인증을 진행하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
// 폼을 동적으로 생성하여 전송
|
||||
let newForm = $("<form></form>");
|
||||
newForm.attr("name", "submitForm");
|
||||
newForm.attr("method", "POST");
|
||||
newForm.attr("action", encodeURI('/mobileuser/updateUserPasswordIntro.do')); // 대상 URL 설정
|
||||
|
||||
// 입력된 데이터 추가
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'userPhoneNumber', value: phoneNumber }));
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'membershipAccount', value: membershipAccount }));
|
||||
|
||||
// 페이지에 폼 추가 및 제출
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 휴대폰 본인인증
|
||||
****************************************************************************/
|
||||
function fn_sendAuthNum(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(userPhoneNumber!==phoneNumber){
|
||||
modalEvent.warning("조회", "등록된 휴대폰번호를 입력하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호를 입력하세요.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
// 인증번호 발송
|
||||
fn_insertPhoneAuth();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 등록
|
||||
****************************************************************************/
|
||||
function fn_insertPhoneAuth(){
|
||||
|
||||
isRunning = false;
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authType = 'PW';
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authType", authType);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
|
||||
modalEvent.success("", data.msgDesc, function(){
|
||||
isRunning = true;
|
||||
|
||||
fn_startTimer();
|
||||
$("#sendAuthNumBtn").text("재전송");
|
||||
$(".certification_box2").show();
|
||||
});
|
||||
|
||||
}else{
|
||||
modalEvent.danger("", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 타이머 함수 실행
|
||||
****************************************************************************/
|
||||
function fn_startTimer() {
|
||||
|
||||
// 남은 시간(초)
|
||||
let count = 180;
|
||||
let display = document.querySelector('#timer');
|
||||
|
||||
let minutes, seconds;
|
||||
let timer = setInterval(function () {
|
||||
if(isRunning){
|
||||
minutes = parseInt(count / 60, 10);
|
||||
seconds = parseInt(count % 60, 10);
|
||||
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||
seconds = seconds < 10 ? "0" + seconds : seconds;
|
||||
display.textContent = "유효시간 " + minutes + ":" + seconds;
|
||||
isRunning = true;
|
||||
}else{
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
// 타이머 종료
|
||||
if (--count < 0) {
|
||||
clearInterval(timer);
|
||||
display.textContent = "";
|
||||
isRunning = false;
|
||||
$("#authNumber").val("");
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 인증번호 확인 조회
|
||||
****************************************************************************/
|
||||
function fn_selectPhoneAuthCheck(){
|
||||
|
||||
let phoneNumber = $("#phoneNumber").val();
|
||||
let authNumber = $("#authNumber").val();
|
||||
let reg_tel = /^[0-9]{10,11}$/;
|
||||
|
||||
if(true != fn_emptyCheck(phoneNumber)){
|
||||
modalEvent.warning("조회", "휴대폰번호는 필수 값입니다.");
|
||||
return;
|
||||
}else{
|
||||
if(reg_tel.test(phoneNumber) != true) {
|
||||
modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다.");
|
||||
return;
|
||||
}else{
|
||||
phoneNumber = phoneNumber.replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(authNumber)){
|
||||
modalEvent.warning("조회", "인증번호를 입력하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("phoneNumber", phoneNumber);
|
||||
formData.append("authNumber", authNumber);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'),
|
||||
data: formData,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if(data.msgCode=='0'){
|
||||
modalEvent.success("", data.msgDesc);
|
||||
phoneAuthYn = "Y";
|
||||
clearInterval(timer);
|
||||
isRunning = false;
|
||||
checkAllFields();
|
||||
}else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
phoneAuthYn = "N";
|
||||
checkAllFields();
|
||||
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다.");
|
||||
phoneAuthYn = "N";
|
||||
checkAllFields();
|
||||
|
||||
},
|
||||
beforeSend:function(xhr){
|
||||
xhr.setRequestHeader("token", sessionStorage.getItem("token"));
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function alertFunc() {
|
||||
var min = num / 60;
|
||||
min = Math.floor(min);
|
||||
|
||||
var sec = num - (60 * min);
|
||||
sec = sec > 9 ? sec : "0"+sec ;
|
||||
|
||||
if(num == 0){
|
||||
certCellFlag = "T";
|
||||
clearInterval(myVar) // num 이 0초가 되었을대 clearInterval로 타이머 종료
|
||||
}
|
||||
num--;
|
||||
}
|
||||
|
||||
function fn_errorMsgPop(){
|
||||
modalEvent.warning('오류',errorMsg);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit() {
|
||||
if(errorMsg){
|
||||
fn_errorMsgPop();
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent() {
|
||||
// 다음버튼
|
||||
$("#btn_selectUserPhoneNumber").click(function () {
|
||||
fn_selectUserPhoneNumber();
|
||||
});
|
||||
|
||||
$("#back_btn").click(function () {
|
||||
location.href='/mobile'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(function () {
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,72 @@
|
||||
/****************************************************************************
|
||||
* 다음버튼 -비밀번호 재설정
|
||||
****************************************************************************/
|
||||
function fn_updateUserPassword() {
|
||||
let membershipPassword = $("#membershipPassword").val();
|
||||
let passwordCheck= $("#passwordCheck").val();
|
||||
|
||||
if(true != fn_emptyCheck(membershipPassword)){
|
||||
modalEvent.warning("등록", "비밀번호를 입력하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
if(true != fn_emptyCheck(passwordCheck)){
|
||||
modalEvent.warning("등록", "비밀번호 재확인을 입력하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
if(membershipPassword!==passwordCheck){
|
||||
modalEvent.warning("등록", "비밀번호가 일치하지 않습니다.");
|
||||
return;
|
||||
}
|
||||
// 폼을 동적으로 생성하여 전송
|
||||
let newForm = $("<form></form>");
|
||||
newForm.attr("name", "submitForm");
|
||||
newForm.attr("method", "POST");
|
||||
newForm.attr("action", encodeURI('/mobileuser/updateUserPassword.do')); // 대상 URL 설정
|
||||
|
||||
// 입력된 데이터 추가
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'userPhoneNumber', value: userPhoneNumber }));
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'membershipAccount', value: membershipAccount }));
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'membershipPassword', value: membershipPassword }));
|
||||
newForm.append($('<input/>', { type: 'hidden', name: 'passwordCheck', value: passwordCheck }));
|
||||
|
||||
// 페이지에 폼 추가 및 제출
|
||||
newForm.appendTo('body');
|
||||
newForm.submit();
|
||||
}
|
||||
function fn_errorMsgPop(){
|
||||
modalEvent.warning('오류',errorMsg)
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit() {
|
||||
if(errorMsg){
|
||||
fn_errorMsgPop()
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent() {
|
||||
// 다음버튼
|
||||
$("#btn_selectUserPhoneNumber").click(function () {
|
||||
fn_selectUserPhoneNumber();
|
||||
});
|
||||
|
||||
$("#back_btn").click(function () {
|
||||
location.href='/mobile'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(function () {
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,69 @@
|
||||
/****************************************************************************
|
||||
* 예약 등록
|
||||
****************************************************************************/
|
||||
function fn_insertUserInquiry(){
|
||||
let title = $('#title').val();
|
||||
let content = $('#content').val();
|
||||
if(true != fn_emptyCheck(title)){
|
||||
modalEvent.warning("등록", "문의 제목을 입력하세요.");
|
||||
return;
|
||||
}
|
||||
if(true != fn_emptyCheck(content)){
|
||||
modalEvent.warning("등록", "문의 내용을 입력하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("title",title)
|
||||
formData.append("content",content)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuserinquiry/insertUserInquiry.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
const param = {
|
||||
|
||||
}
|
||||
if('0'==data.msgCode) {
|
||||
modalEvent.success("등록 성공","1:1 문의가 등록되었습니다.", function(){
|
||||
location.href ='/mobilecustomerservice/selectListUserInquiryIntro.do'
|
||||
});
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,146 @@
|
||||
/* ##############################################################
|
||||
설 명 : [Modal]공지사항 상세/수정 팝업
|
||||
작성일 : 2023. 01. 19.
|
||||
작성자 : NTsoft
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023. 01. 19. NTsoft 최초 생성
|
||||
*/
|
||||
let userInquirySelectModal = {
|
||||
callback : null,
|
||||
reqParam : null,
|
||||
dataList : null,
|
||||
/* 모달 초기화 작업 */
|
||||
init : function () {
|
||||
$('#userInquirySelectModal').remove();
|
||||
$('body').append( this.HtmlTemplate);
|
||||
//그리드 이벤트
|
||||
this.setEvent();
|
||||
},
|
||||
/* 그리드 이벤트 설정 */
|
||||
setEvent:function() {
|
||||
$('#userInquirySelectModal .btnCancle').on("click", function(){
|
||||
userInquirySelectModal.close();
|
||||
});
|
||||
},
|
||||
/* 데이터 선택 */
|
||||
setSelect:function(selectNumber) {
|
||||
let checkedData = dataList[selectNumber];
|
||||
if(dataList==null||checkedData==undefined){
|
||||
return ;
|
||||
}
|
||||
|
||||
if( userInquirySelectModal.callback ) {
|
||||
userInquirySelectModal.callback(checkedData);
|
||||
}
|
||||
userInquirySelectModal.close();
|
||||
},
|
||||
// 상세 조회
|
||||
search:function(state) {
|
||||
let muUserInquiryId = userInquirySelectModal.reqParam.muUserInquiryId;
|
||||
|
||||
if(true != fn_emptyCheck(muUserInquiryId)){
|
||||
modalEvent.warning("조회", "문의사항 정보가 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("muUserInquiryId", muUserInquiryId);
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuserinquiry/selectUserInquiry.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
$("#userInquirySelectModal #modalTitle").text(data.rows[0].title);
|
||||
$("#userInquirySelectModal #modalContent").empty().html(data.rows[0].content.replace(/\n/g,"<br/>"));
|
||||
$("#userInquirySelectModal #writeDate").text(data.rows[0].writeDate);
|
||||
$("#userInquirySelectModal #writeTime").text(data.rows[0].writeTime);
|
||||
if(data.rows[0].answer){
|
||||
$("#userInquirySelectModal #answer").empty().html(data.rows[0].answer.replace(/\n/g,"<br/>"));
|
||||
$("#userInquirySelectModal #answerDate").text(data.rows[0].answerDate);
|
||||
$("#userInquirySelectModal #answerTime").text(data.rows[0].answerTime);
|
||||
$("#userInquirySelectModal .modal-body").css('display','block')
|
||||
}
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* 팝업
|
||||
* callback : 콜백함수, reqParam: 팝업파라미터
|
||||
*/
|
||||
popup:function(callback, reqParam) {
|
||||
// 초기화 후 열기
|
||||
userInquirySelectModal.init();
|
||||
|
||||
//콜백함수 지정.
|
||||
userInquirySelectModal.callback = callback;
|
||||
userInquirySelectModal.reqParam = reqParam;
|
||||
userInquirySelectModal.dataList = null;
|
||||
|
||||
setTimeout(function(){
|
||||
$('#userInquirySelectModal').modal('show')
|
||||
}, 200);
|
||||
|
||||
userInquirySelectModal.search();
|
||||
},
|
||||
/*
|
||||
* 팝업 닫기
|
||||
*/
|
||||
close:function() {
|
||||
$('#userInquirySelectModal').modal('hide');
|
||||
|
||||
setTimeout(function(){
|
||||
$('#userInquirySelectModal').remove();
|
||||
},500);
|
||||
},
|
||||
HtmlTemplate : `
|
||||
<div class="modal inquirySelect_modal fade" id="userInquirySelectModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<p class="label" id="modalTitle">이벤트 시술 가격 문의</p>
|
||||
<p>
|
||||
<span id="writeDate">2021-07-07</span>
|
||||
<span id="writeTime">14:00</span>
|
||||
</p>
|
||||
<p id="modalContent" class="inquiry_content">추석 연휴간 휴진하게 되어, 예약이 불가능합니다. 추석 연휴간 휴진하게 되어, 예약이 불가능합니다.</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-body" style="display:none">
|
||||
<p class="label">문의 답변</p>
|
||||
<p>
|
||||
<span id="answerDate">2021-07-07</span>
|
||||
<span id="answerTime">14:00</span>
|
||||
</p>
|
||||
<p id="answer" class="inquiry_answer">추석 연휴간 휴진하게 되어, 예약이 불가능합니다. 추석 연휴간 휴진하게 되어, 예약이 불가능합니다.</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<div class="btn_box">
|
||||
<button class="ok_btn btnCancle">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,79 @@
|
||||
/****************************************************************************
|
||||
* 1:1문의내역 리스트 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListUserInquiryJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuserinquiry/selectListUserInquiry.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
$('main ul').empty();
|
||||
if(0<data.totalCount){
|
||||
data.rows.forEach((inquiryData,index)=>{
|
||||
const innerHtml = ` <li onclick="fn_selectInquiryPopup('${inquiryData.muUserInquiryId}')">
|
||||
<div>
|
||||
<p>${inquiryData.title}</p>
|
||||
<p>${inquiryData.writeDate}</p>
|
||||
</div>
|
||||
<div><p>${inquiryData.answerStatus}</p></div>
|
||||
</li>`;
|
||||
$('main ul').append(innerHtml);
|
||||
});
|
||||
|
||||
} else {
|
||||
const innerHtml = `<li><p>문의내역이 없습니다</p></li>`;
|
||||
$('main ul').append(innerHtml);
|
||||
}
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fn_selectInquiryPopup(param){
|
||||
let reqParam = {
|
||||
"muUserInquiryId" : param
|
||||
};
|
||||
|
||||
userInquirySelectModal.popup(function(obj, reqParam) {
|
||||
fn_selectListUserInquiryJson();
|
||||
}, reqParam);
|
||||
|
||||
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
fn_selectListUserInquiryJson();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
@@ -0,0 +1,288 @@
|
||||
/****************************************************************************
|
||||
* 최근 6개 인바디 데이터 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListRecentUserPhysicalJson(){
|
||||
let formData = new FormData();
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuserphysical/selectRecentUserPhysicalList.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
if('0'==data.msgCode){
|
||||
if(0<data.totalCount){
|
||||
const labels = data.rows.map(item => item.writeDate);
|
||||
const bmiValues = data.rows.map(item => item.bmi);
|
||||
while (labels.length < 6) {
|
||||
labels.push(''); // 빈 라벨 추가
|
||||
bmiValues.push(null); // 빈 데이터 추가
|
||||
}
|
||||
fn_drawBmiChart(labels, bmiValues);
|
||||
// 최대 및 최소 BMI 계산
|
||||
const maxBmi = Math.max(...bmiValues.filter(value => value !== null));
|
||||
const minBmi = Math.min(...bmiValues.filter(value => value !== null));
|
||||
|
||||
// 최고 및 최저 BMI 값을 표시
|
||||
const bmiInfoDiv = document.querySelector('.bmi-info');
|
||||
bmiInfoDiv.textContent = `최고 ${maxBmi} | 최저 ${minBmi}`;
|
||||
|
||||
//검색일자 인바디 데이터 조회
|
||||
fn_UserPhysicalSearch();
|
||||
} else {
|
||||
console.log("없음");
|
||||
$('.exist_box').empty();
|
||||
const innerHtml = '<div class="none_box" style="margin: 20px">' +
|
||||
'<p>측정된 기록이 없어요 😭</p>' +
|
||||
'<p>인바디 / BMI 측정은 내원시 요청하실 수 있어요</p>' +
|
||||
'</div>';
|
||||
$('main').append(innerHtml)
|
||||
}
|
||||
} else if (data.msgCode == '-1') {
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
} else {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 검색일자 인바디 데이터 조회
|
||||
****************************************************************************/
|
||||
function fn_selectListUserPhysicalJson(){
|
||||
let formData = new FormData();
|
||||
formData.append('physicalSearchDate',physicalSearchDate)
|
||||
$.ajax({
|
||||
url: encodeURI('/mobileuserphysical/selectUserPhysicalList.do'),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
async: false,
|
||||
success: function(data){
|
||||
const pastWrapper = $('.past_reservation');
|
||||
if('0'==data.msgCode){
|
||||
$('.bodyinfo_wrap').empty();
|
||||
if(0<data.totalCount){
|
||||
data.rows.forEach((physicalData,index)=>{
|
||||
const innerHtml =`<div class="bodyinfo_box">
|
||||
<p class="date">${physicalData.writeDate}</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p class="label">키</p>
|
||||
<p><span>${physicalData.height}</span> <span>cm</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">몸무게</p>
|
||||
<p><span>${physicalData.weight}</span> <span>kg</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="label">BMI</p>
|
||||
<p><span>${physicalData.bmi}</span> <span>kg/m2</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>`
|
||||
$('.bodyinfo_wrap').append(innerHtml)
|
||||
})
|
||||
|
||||
}else{
|
||||
const innerHtml = '<div class="none_box" style="margin: 20px">' +
|
||||
'<p>측정된 기록이 없어요 😭</p>' +
|
||||
'<p>인바디 / BMI 측정은 내원시 요청하실 수 있어요</p>' +
|
||||
'</div>';
|
||||
$('.bodyinfo_wrap').append(innerHtml)
|
||||
}
|
||||
} else if (data.msgCode=='-1'){
|
||||
modalEvent.warning("조회 오류", data.msgDesc);
|
||||
}
|
||||
else{
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
},
|
||||
beforeSend:function(){
|
||||
|
||||
},
|
||||
complete:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색하기
|
||||
****************************************************************************/
|
||||
function fn_UserPhysicalSearch(param){
|
||||
fn_selectListUserPhysicalJson();
|
||||
}
|
||||
// 차트를 그리는 함수
|
||||
function fn_drawBmiChart(labels, bmiValues) {
|
||||
const ctx = document.getElementById('myChart').getContext('2d');
|
||||
|
||||
const maxDataValue = Math.max(...bmiValues) * 1.5;
|
||||
const myChart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: 'BMI',
|
||||
data: bmiValues,
|
||||
backgroundColor: '#00FF00',
|
||||
borderColor: '#00FF00',
|
||||
borderWidth: 1,
|
||||
barThickness: 10
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
max: maxDataValue,
|
||||
ticks: {
|
||||
stepSize: 10,
|
||||
color: '#ffffff'
|
||||
},
|
||||
grid: {
|
||||
color: '#333333'
|
||||
}
|
||||
},
|
||||
x: {
|
||||
ticks: {
|
||||
color: '#ffffff'
|
||||
},
|
||||
grid: {
|
||||
color: '#333333'
|
||||
}
|
||||
}
|
||||
},
|
||||
plugins: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
tooltip: {
|
||||
enabled: true
|
||||
},
|
||||
datalabels: {
|
||||
anchor: 'end',
|
||||
align: 'top',
|
||||
color: '#00FF00',
|
||||
formatter: function (value) {
|
||||
return value !== null ? value.toFixed(1) : '';
|
||||
}
|
||||
}
|
||||
},
|
||||
animation: {
|
||||
duration: 1000
|
||||
}
|
||||
},
|
||||
plugins: [ChartDataLabels]
|
||||
});
|
||||
}
|
||||
/****************************************************************************
|
||||
* 페이지 init
|
||||
****************************************************************************/
|
||||
function fn_pageInit(){
|
||||
|
||||
if(isMobile.Android()){
|
||||
// 안드로이드
|
||||
let value;
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").click(function(e){
|
||||
e.preventDefault();
|
||||
value = prompt("monthPicker");
|
||||
|
||||
if(!value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
|
||||
}else{
|
||||
let valueArr = value.split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
physicalSearchDate = year+"-"+month;
|
||||
$(this).val(physicalSearchDate);
|
||||
|
||||
fn_selectListUserPhysicalJson();
|
||||
});
|
||||
|
||||
}else if(isMobile.IOS()){
|
||||
// IOS
|
||||
let value; /**/
|
||||
let year;
|
||||
let month;
|
||||
|
||||
$("#mmDatepicker").change(function(){
|
||||
value = $(this).val()
|
||||
if(!value){
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
year = toDate.getFullYear();
|
||||
month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
}else{
|
||||
let valueArr = $(this).val().split("-");
|
||||
year = valueArr[0];
|
||||
month = valueArr[1];
|
||||
if(month < 10) month = "0" + month;
|
||||
}
|
||||
|
||||
physicalSearchDate = year+"-"+month;
|
||||
$(this).val(physicalSearchDate);
|
||||
|
||||
fn_selectListUserPhysicalJson();
|
||||
});
|
||||
}
|
||||
|
||||
if(physicalSearchDate){
|
||||
$("#mmDatepicker").val(physicalSearchDate)
|
||||
}else{
|
||||
// 오늘
|
||||
let toDate = new Date();
|
||||
let year = toDate.getFullYear();
|
||||
let month = toDate.getMonth() + 1;
|
||||
if(month < 10) month = "0" + month;
|
||||
$("#mmDatepicker").val( year+'-'+month).trigger("change");
|
||||
|
||||
physicalSearchDate = year+"-"+month;
|
||||
}
|
||||
//최근 인바디 데이터 조회
|
||||
fn_selectListRecentUserPhysicalJson();
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 페이지 event
|
||||
****************************************************************************/
|
||||
function fn_pageEvent(){
|
||||
|
||||
}
|
||||
|
||||
$(function(){
|
||||
// 페이지 init
|
||||
fn_pageInit();
|
||||
|
||||
// 페이지 event
|
||||
fn_pageEvent();
|
||||
});
|
||||
Reference in New Issue
Block a user