/** * quick 지점코드 업데이트 * @param obj */ function setQuickCstrInfo(obj) { let cstrInfo = [obj.cstrCd, obj.cstrLrclsCd, obj.cstrMdclsCd, encodeURIComponent(obj.cstrDspNm), encodeURIComponent(obj.lrclsDtlCdNm), encodeURIComponent(obj.mdclsDtlCdNm), encodeURIComponent(obj.grpClsNm), obj.selCstrCd]; $.cookie("quickCstrInfo", cstrInfo.join("_"), lddi.COOKIE_OPTION); cstrDataLoad(obj.selCstrCd == obj.cstrCd ? obj.cstrCd : obj.selCstrCd); } /** * 지점코드 기준 */ function getCstrPageType() { // 현재 경로 const path = $('#quickPath').val(); // true: 지점코드 페이지 기준 , false: 지점코드 선택 기준 switch (path) { case "/store/main": return true; // 지점정보 case "/store/floor": return true; // 층별 안내 case "/store/type": return true; // 유형별 안내 case "/store/convenience": return true; // 편의시설 case "/store/dining": return true; // F&B case "/contents/shpgInfo": return true; // 쇼핑정보 case "/shpgnews/shpgnewsDetail": return true; // 쇼핑뉴스 상세 case "/thku/thkuDetail": return true; // 사은 상세 case "/cpn/cpnDetail": return true; // 쿠폰 상세 case "/cuterent/cuterentDetail": return true; // 문화/이벤트 상세 case "/shopnow/cntsList": return true; // Shop Now default: return false; } } /** * quick 메뉴 열기 * @param */ let quickMenuSync; let quickMenuFlag = false; function quickMenuOpen() { quickMenuSync = setInterval(function() { if (quickMenuFlag) { window.__openSelectBranch({type:'quick', zIndex:true}); clearInterval(quickMenuSync); setTimeout(function() { let i = 1; let quickHeight = 0; let heightArr = [18, 23, 10, 10, 10, 44]; for (let j in heightArr) { quickHeight += $('.quick-height'+i).height()+heightArr[j]; i++; } $('.quickContent').height(quickHeight); }, 500); } }, 100); } /** * quick 메뉴 닫기 * @param cstrCd */ function quickCstrClose(cstrCd) { // quick 지점정보 const quickCstrInfo = setCstrObj($.cookie("quickCstrInfo"), true); // 지점코드 const result = getCstrPageType() == true ? cstrCd : quickCstrInfo.selCstrCd; // 데이터 로드 cstrDataLoad(result); } /** * 지점정보 데이터 로드 * @param param */ function cstrDataLoad(param) { $.ajax({ url: _CONTEXT_PATH_ + "/main/cstrInfo", type: 'POST', cache : false, dataType: 'json', data: { cstrCd : param } }) .done(function(response) { dataInit(response); }) .fail(function(response) { console.log("error dataLoad()"); }); } function goUrl(cstrCd) { // 월드몰 예외처리 if (confirm('월드점 홈페이지로 이동합니다.')) { window.open('https://www.lwt.co.kr/main/main.do', 'newWindow'); } } /** * quick 메뉴 생성 * @param data */ function dataInit(data) { // 초기화 const noData = '-'; var cstrInfo= setCstrObj($.cookie("cstrInfo"), true); var activeCstrCd = cstrInfo.selCstrCd; // 모자점 생성 let brancTypeHtml = ''; $.each(data.sibilingList, function(idx, sibiling) { let active = (activeCstrCd == sibiling.cstrCd) ? "active" : ""; if(sibiling.cstrCd != "0370"){ // #10005 영플라자 미노출 brancTypeHtml += '
  • ' + sibiling.cstrDspNm + '
  • '; } }); if (data.sibilingList.length == 0) { brancTypeHtml += '
  • '; } $('.branch-type').empty(); $('.branch-type').append(brancTypeHtml); // 지점 상세 생성 let onFlag = false, offFlag = false, halfFlag = false; let subBranchHtml = ''; let brancAreaHtml = ''; let brancStoreHtml = ''; $.each(data.cstrInfoList, function(i, cstrInfo) { // 초기화 let active = i==0 ? "active" : ""; let holidayArr = new Array(), runningStateArr = new Array(); let operationTm = '', restaurantTm = '', lastOrderTm = '', holiday = '', rpsntTelno = '', holidayTxt = '', runningState = ''; const dyofClCd = cstrInfo.dyofClCd, eosStDt = cstrInfo.eosStDt; // 영업시간 operationTm = (!lddi.util.string.isEmpty(cstrInfo.stTm) && !lddi.util.string.isEmpty(cstrInfo.endTm)) ? cstrInfo.stTm+"~"+cstrInfo.endTm : noData; // 식당영업시간 restaurantTm = (!lddi.util.string.isEmpty(cstrInfo.resBsleStTm) && !lddi.util.string.isEmpty(cstrInfo.resBsleEndTm)) ? cstrInfo.resBsleStTm+"~"+cstrInfo.resBsleEndTm : noData; (restaurantTm == "00:00~00:00") ? restaurantTm = noData : ''; // 라스트오더시간 if (!lddi.util.string.isEmpty(cstrInfo.resLastOrdTm)) { lastOrderHour = cstrInfo.resLastOrdTm.substring(0,2); lastOrderMinute = cstrInfo.resLastOrdTm.substring(3,5); } (cstrInfo.resLastOrdTm == "00:00") ? cstrInfo.resLastOrdTm = "" : ''; // 휴일날짜 let quickDateFlag = false; const now = lddi.util.date.format(new Date(), "yyyyMMdd"); $.each(cstrInfo.holidayList, function(j, item) { let caledarDt = new Date(item.calendarDt.substring(0, 4)+"-"+item.calendarDt.substring(4, 6)+"-"+item.calendarDt.substring(6, 8)); holidayArr[j] = lddi.util.date.format(new Date(item.calendarDt.substring(0, 4)+"-"+item.calendarDt.substring(4, 6)+"-"+item.calendarDt.substring(6, 8)), 'M.d(E)'); if (now == item.calendarDt) { quickDateFlag = true; halfFlag = true; } }); holidayArr = $.grep(holidayArr,function(n){ return n == " " || n; }); holiday = (!lddi.util.string.isEmpty(holidayArr)) ? holidayArr.join(", ") : noData; if(dyofClCd != '9') { holidayTxt = ''; // 지점별 휴일 if (!quickDateFlag) { onFlag = true; if(dyofClCd == '1') holidayTxt += '오늘은 정상영업 중'; else if(dyofClCd == '3') holidayTxt += '오늘은 연장영업 중'; else if(dyofClCd == '4' || dyofClCd == '7') holidayTxt += '오늘은 단축영업 중'; else if(dyofClCd == '5') holidayTxt += '명절당일 영업 중'; else if(dyofClCd == '6') holidayTxt += '오늘은 ' + cstrInfo.bsleNm + ' 중'; runningState = 'on'; } else { offFlag = true; holidayTxt += '휴점일 입니다'; runningState = 'off'; operationTm = holidayTxt; // 영업시간 restaurantTm = holidayTxt; // 식당가 cstrInfo.resLastOrdTm = ''; // 라스트오더시간 } if(cstrInfo.cstrCd != '0354') subBranchHtml += '
    '+holidayTxt+'
    '; } else { subBranchHtml += '
    ' + eosStDt + '부 영업종료
    '; } // 대표전화 rpsntTelno = (!lddi.util.string.isEmpty(cstrInfo.rpsntTelno)) ? cstrInfo.rpsntTelno : noData; // 상세 brancAreaHtml += ''; // 스토어 brancStoreHtml += '
    '; brancStoreHtml += ' '; brancStoreHtml += '
    '; }); $('.branch-area').empty(); $('.branch-area').append(brancAreaHtml); $('.branch-store').empty(); $('.branch-store').append(brancStoreHtml); // 지점정보 obj const cstrInfoObj = setCstrObj(data.cstrInfoList[0], false); // 지점정보 대분류, 중분류 설정 let branchHtml = ''; branchHtml += '
    '; branchHtml += subBranchHtml; branchHtml += '
    '; branchHtml += '
    '; branchHtml += '
    '+cstrPrefix(cstrInfoObj)+'
    '; branchHtml += '

    '; branchHtml += ' '+data.cstrInfoList[0].cstrNm+''; branchHtml += ' '; branchHtml += '

    '; branchHtml += '
    '; $('.branch-current').empty(); $('.branch-current').append(branchHtml); // 지점 영업상태 표시 if (onFlag && !offFlag && !halfFlag) { document.querySelector('.menu__quick').setAttribute('running-state' , 'on'); } else if(!onFlag && offFlag && halfFlag) { document.querySelector('.menu__quick').setAttribute('running-state' , 'off'); } else { document.querySelector('.menu__quick').setAttribute('running-state' , 'both'); } // 날씨 생성 let brancWeatherHtml = ''; $.each(data.wthrInfoList, function(i, wthrInfo) { let active = i == 0 ? "active" : ""; const address1 = !lddi.util.string.isEmpty(wthrInfo.strAddr1) ? wthrInfo.strAddr1 : ''; const address2 = !lddi.util.string.isEmpty(wthrInfo.strAddr2) ? wthrInfo.strAddr2 : ''; let address; if (lddi.util.string.isEmpty(address1) && lddi.util.string.isEmpty(address2)) { address = noData; } else if (!lddi.util.string.isEmpty(address1) && lddi.util.string.isEmpty(address2)) { address = address1; } else { address = address1 + ' ' +address2; } brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += '

    '+address+'

    '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += ' '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += ' '+wthrInfo.tmprVal+''; brancWeatherHtml += ' °'; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; brancWeatherHtml += '
    '; }); $('.branch-weather').empty(); $('.branch-weather').append(brancWeatherHtml); // 지점 쇼핑뉴스 생성 let branchNewsHtml = ''; branchNewsHtml += ''; $('.branch-news').empty(); $('.branch-news').append(branchNewsHtml); // 쇼핑뉴스 클릭 이벤트 $('.news'+data.cstrInfoList[0].cstrCd).on('click', function() { ga4.event('click_event', 'PC_공통', '퀵UI_하단메뉴', '쇼핑뉴스 보러가기', ''); changeCstrInfo(data.cstrInfoList[0]); }); // 데이터 로드 완료 quickMenuFlag = true; } /** * quick > gnb 지점변경 * @param e * @param cstrLrclsCd * @param cstrCd */ function closeQuickAndOpenBranch(e, cstrLrclsCd, cstrCd) { // quick hide window.__selectBranch.hide(e); // 클래스명 const classNm = cstrLrclsCd == 'C00110' ? 'dept' : (cstrLrclsCd == 'C00130' ? 'outlet' : (cstrLrclsCd == 'C00150' ? 'timevillas' : 'shoppingmall')); // 활성화 초기화 $('.branchClear').removeClass('active'); // 지점 타이틀 활성화 $('._'+classNm).addClass('active'); // 세부지점 영역 활성화 $('.__'+classNm).addClass('active'); // 선택지점 활성화 (cstrLrclsCd: 자점대분류코드, cstrCd: 자점코드) var quickGnbSelectCstr = $("li[class*='_"+cstrCd+"'"); quickGnbSelectCstr.addClass('active'); //$('.'+cstrLrclsCd+'_'+cstrCd).addClass('active'); //$('.'+'_'+cstrCd).addClass('active'); // gnb open window.__openSelectBranch({type:'gnb', zIndex:true, select:classNm}); } /** * gnb > quick 지점변경 * @param e * @param obj */ function hideBranchPopup(e, obj) { // gnb hide window.__selectBranch.hide(e); $("#quickSearch").val(''); let isContent = e.closest('.select-branch-popup').classList.contains('__content'); if(isContent) return; const _value = e.querySelector('button').innerHTML; const _quickMenu = document.querySelector('.menu__quick'); _quickMenu.setAttribute('select-branch', _value); quickMenuOpen(); } /** * 지점정보 오브젝트 생성 * @param param * @param flag */ function setCstrObj(param, flag) { let _splitData = ''; if (flag) _splitData = (lddi.util.string.isEmpty(param)) ? $.cookie("cstrInfo").split("_") : param.split("_"); // obj 생성 const obj = { lrclsDtlCdNm : flag == true ? decodeURIComponent(_splitData[4]) : param.lrclsDtlCdNm, cstrLrclsCd : flag == true ? _splitData[1] : param.cstrLrclsCd, cstrCd : flag == true ? _splitData[0] : param.cstrCd, cstrMdclsCd : flag == true ? _splitData[2] : param.cstrMdclsCd, cstrDspNm : flag == true ? decodeURIComponent(_splitData[3]) : param.cstrDspNm, mdclsDtlCdNm : flag == true ? decodeURIComponent(_splitData[5]) : param.mdclsDtlCdNm, grpClsNm : flag == true ? decodeURIComponent(_splitData[6]) : param.grpClsNm, selCstrCd : flag == true ? decodeURIComponent(_splitData[7]) : "", cstrLrclsDspNm : flag == true ? "" : param.cstrLrclsDspNm } return obj; } /** * 지점대분류명 표기 예외처리 * @param obj */ function cstrPrefix(obj) { //let result = obj.cstrLrclsCd == "C00110" ? obj.lrclsDtlCdNm : obj.mdclsDtlCdNm; let result = obj.cstrLrclsDspNm; $.each(obj.sibilingList, function(idx, sibiling) { result = sibiling.grpDspNm; }); return result; } /** * quick 검색 유효성 검사 */ function searchValid() { const quickSearchTxt = $('#quickSearch').val(); if (quickSearchTxt) { ga4.event('click_event', 'PC_공통', '퀵UI_검색', quickSearchTxt, ''); lddi.ButtonLink.searchTotal(quickSearchTxt); } else { alert('브랜드, 서비스 검색어를 입력하세요.'); } } /** * quick 메뉴 초기화 */ function quickBranchInit() { // 검색 button 이벤트 $("#btnQuickSearch").on("click", function() { searchValid(); }); // 검색 input 이벤트 $("#quickSearch").keyup(function(event) { if (event.which === 13) { searchValid(); } }); // gnb 선택 이후 if (!lddi.util.string.isEmpty($.cookie("quickCstrInfo"))) { // 지점정보 const cstrInfo = setCstrObj($.cookie("cstrInfo"), true); // 지점정보 대분류명 const _quickMenu = document.querySelector('.menu__quick'); _quickMenu.setAttribute('select-branch', cstrInfo.cstrDspNm); // 지점코드 getCstrPageType() == true ? cstrDataLoad(cstrInfo.selCstrCd == cstrInfo.cstrCd ? cstrInfo.cstrCd : cstrInfo.selCstrCd) : setQuickCstrInfo(cstrInfo); } } document.addEventListener("DOMContentLoaded", function() { quickBranchInit(); })