{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/vendors/anteater.validate.min.js","webpack:///./src/js/utils/util-extent.js","webpack:///./src/js/components/module/TestDriveRecord.js","webpack:///./src/js/components/module/TestDriveSearch.js","webpack:///./src/js/pages/test-drive-inquire.js","webpack:///./src/js/components/module/TestDriveCore.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/js/utils/device.js","webpack:///./src/js/components/module/LocationMap.js","webpack:///./src/js/components/module/LocationListItem.js","webpack:///./src/js/components/module/LocationViewer.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","65","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","e","anteater","g","f","split","h","k","isMobileNumber","b","test","isPhoneNumber","isEmail","isIdentityInTaiwan","a","parseInt","substr","toLowerCase","String","Validate","$","tmpl","pStr","pData","reg","str","keys","forEach","item","RegExp","replace","getQueryString","pKey","location","search","decodeURIComponent","initSetVCode","$img","attr","Math","round","random","setVCode","on","this","padLeft","lenght","toString","loadingView","setGA","id","undefined","dataLayer","event","event_userID","stringFormat","args","arguments","argument","getURLParameter","sParam","getParaFromUrl","address","parameter","decodeURI","sURLVariables","substring","sParameterName","verityInput","type","getSpecialTip","TestDriveRecord","$container","tel","email","loading","$target","html","$cancelBtn","find","CNACELABLE","onCancelClick","hide","TYPE","show","append","confirm","ajax","url","dataType","cache","ID","TEL","EMAIL","done","RS","remove","alert","emit","CANCEL","fail","console","log","always","EventEmitter","TestDriveSearch","$searchContent","$recordContent","$records","onSearch","initVaild","TestDriveCore","vaildity","preventDefault","val","showRecord","DATA","extraData","empty","element","onRecordCanceled","text","children","href","TIME_DATA","time","label","InstantCar","opt","extend","showMap","demoMode","cnyLimit","$main","$groupDatetime","CRUrl","vaildUrl","submitUrl","Url","getExcludeData","isInstant","instantUrl","carlist","userData","isLogin","notice","delay","disabledDates","startDay","getNow","getHours","minDate","moment","add","isBetween","maxDate","each","index","el","format","datepicker","weekStart","startDate","endDate","maxViewMode","language","autoclose","defaultDate","Date","datesDisabled","currentTarget","addClass","removeClass","rsDATA","$complete","NAME","CARID","CAR","TIME","DATE","timeStr","LOCATION","checkedItemData","city","area","title","isMobile","EVENT_ICS","EVENT_LINK","target","onclick","getSelectedCarId","TheModel","scrollTop","$obj","message","isVaild","setCustomValidity","reportValidity","excludeData","setExcludeNoticeWords","NOTICE","ready","self","change","onAddressChange","locationViewer","LocationViewer","isScrollListByMarker","isListItemCheckable","initDateSel","getDisabledDates","updateVCode","initDateTime","initInstTime","baseURL","$emgGroup","engs","indexOf","prop","first","carid","trigger","checkLogin","initDateHide","instdata","careng","cartxt","carname","qrydate","dlrcd","brnhcd","dlrbrn","getInstTimes","loc","onClickQuery","onSubmit","onVail","showCNYLimitAlert","update","checkTDV","keyup","maxLength","next","focus","isSetFocus","tomorrow","dates","timeData","tmplHtml","option","VALUE","LABEL","pathNames","$carType","setCarType","filter","excludeCities","store","targetStores","updateFilter","$serviceTestDrive","$serviceConsultation","choicServiceTestDrive","choicServiceConsultation","TPY","Number","GENDER","ENG","ENGString","CONTACT_TIME","isVaildity","rsvstdt","hdbrnhcd","rsvendt","filteredCarList","car","CARHDBRNHCD","carSel","engno","CAREGNO","iseq","CARISEQ","cardlrcd","CARDLRCD","DATE2","TIME2","DATE3","TIME3","LOC","sales","EDM","EVENT","vail","setTimeout","LIST_ITEM_CHECK","submidata","timeInterval","ERROR","LOGINURL","phoneCode","trim","timer","clearInterval","addPostRsv","submit","eventLabel","event_car","event_label","event_engine","fancybox","close","LICSNO","vcode","DSPRESULT","setMinutes","getMinutes","endTime","getTime","setInterval","nowTime","offsetTime","min","sec","$tip","CARTIME","BRANCH","ENDTIME","list","newHtml","CarTime","Branch","UserETime","UserSTime","carList","addInstTime","timeList","ReturnCode","ReturnMsg","ReturnData","isSuccess","Webusrid","WEBUSRID","seqno","map","webpackContext","req","webpackContextResolve","Error","code","resolve","hasTouch","navigator","userAgent","google","LocationMap","dom","listDict","markerDict","infoWindow","maps","InfoWindow","defOpt","center","lat","lng","zoom","mapTypeControl","zoomControl","streetViewControl","Map","addMarkers","ICON_URL","scaledSize","Size","linkQ","addr","lat1","lon1","lat2","lon2","deg2rad","PI","dLat","dLon","sin","cos","atan2","sqrt","marker","icon","getIcon","Marker","position","visible","addListener","onMarkerClick","setVisible","showInfoWindow","MARKER_CLICK","$item","chargerCount","pricing","payment","aed","exclusive","content","getContent","getDirectionLink","setContent","open","bounds","LatLngBounds","lastMatchKey","isMatch","markerVisibleCount","getPosition","fitBounds","panByMarkerKey","setOptions","panTo","setZoom","tolat","tolng","currentPosition","LocationListItem","isCheckable","weekday","Array","initWeekName","layoutWeekhtml","getNowTimeStatus","getNowTimeString","markerItemshtml","exclusiveCars","dateInfo","TYP","join","dist","isViewMarkerItems","CHECK","onInfoClick","timeSpan","timeNow","timeSplit","start","stop","now","weekName","timeString","active","CLICK","offsetDay","setDate","getDate","getDay","shiftIndex","isSunDay","SDISFLAG","checkTimeStatue","SDTIME","Wflags","ODTIME","day","isGetOtherDay","getNextTimeString","getWeekName","weekhtml","weekHtmlTemplate","HDISFLAG","HDTIME","ebisflag","ntisflag","bpisflag","carHeightType","limitHeight","useGPS","iconUrl","isMaxnervaLog","locationType","$city","$area","$keyword","$listW","$scrollInfoDom","$listContent","listShowed","currentList","updateMapDelayer","currentFilter","items","summary","backProp","islinkDirect","hasClass","openList","updateMap","onLoadList","loadList","directType","keyword","backup","listBackup","list2","CITY","newList","makeCityOption","resetCityOption","cityOption","updateNewMarkers","getCurrentPosition","onCityChange","isInit","adjData","initMap","initCityFilter","parseFloat","LAT","LNG","isNaN","KEY","DEALER","TITLE","dealer","AREA","ADDR","AED","EXCLUSIVE","EBISFLAG","NTISFLAG","BPISFLAG","DATEINFO","EXCLUSIVECARS","CARHEIGHTTYPE","LIMITHEIGHT","$map","onAreaChange","concat","areas","selectedIndex","cb","geolocation","onGetCurrentPosition","coords","latitude","longitude","getDistance","directionLink","clearTimeout","updateMapDelay","q","sendMaxnervaLog","CurrentPosition","sort","dynamicSort","updateMapMarkers","updateList","updateSummary","updateVisibleMarkers","onListItemClick","onListItemCheck","currentTypeName","optiontypeName","scrollListByKey","top","offset","animate","onKeywordSubmit","KEYWORD","argProperty","sortOrder"],"mappings":"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","file":"js/testDriveInquire.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t65: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1056,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","(function(d){var e=function(){var d=/^\\d{10}$/,e=/^[0-9]{6,10}$/,g=/[A-Za-z]{1}[0-9]{9}/,f=\"abcdefghjklmnpqrstuvxywzio\".split(\"\"),h=[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],k=/^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]{2,4})$/;return{isMobileNumber:function(b){return d.test(b)},isPhoneNumber:function(b){return e.test(b)},isEmail:function(b){return k.test(b)},isIdentityInTaiwan:function(b){if(10!=b.length||0==g.test(b))return!1;for(var c=b.split(\"\"),a=1;a hello ash!\r\n *\r\n * @param {any} str\r\n * @param {any} data\r\n * @returns\r\n */\r\nexport function tmpl(pStr, pData) {\r\n let reg;\r\n let str = pStr;\r\n Object.keys(pData).forEach((item) => {\r\n reg = new RegExp(`{{ ${item} }}`, 'g');\r\n str = str.replace(reg, pData[item]);\r\n });\r\n return str;\r\n}\r\nexport function getQueryString(pKey) {\r\n const a = window.location.search.substr(1).split('&');\r\n const b = {};\r\n for (let i = 0; i < a.length; i += 1) {\r\n const p = a[i].split('=');\r\n if (p.length === 2) {\r\n b[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, ' '));\r\n }\r\n }\r\n return b[pKey];\r\n}\r\n\r\nfunction initSetVCode($img) {\r\n $img.attr('src', `api/vcode.ashx?rnd=${Math.round(Math.random() * 999999)}`);\r\n}\r\n\r\nexport function setVCode($img) {\r\n initSetVCode($img);\r\n $img.on('click', function click() {\r\n initSetVCode($(this));\r\n });\r\n}\r\n\r\nexport function padLeft(str, lenght) {\r\n if (str.toString().length >= lenght) {\r\n return str;\r\n }\r\n return padLeft(`0${str}`, lenght);\r\n}\r\n\r\n// loading樣式\r\nexport function loadingView() {\r\n return '
'\r\n + '
Loading...
'\r\n + '
';\r\n}\r\n\r\nexport function setGA(id) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n event: 'userID',\r\n event_userID: id,\r\n });\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-extend-native\r\nexport function stringFormat(args) {\r\n let result = this;\r\n if (arguments.length > 0) {\r\n if (arguments.length === 1 && typeof args === 'object') {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const key in args) {\r\n if (args[key] !== undefined) {\r\n const reg = new RegExp(`({${key}})`, 'g');\r\n result = result.replace(reg, args[key]);\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < arguments.length; i += 1) {\r\n // eslint-disable-next-line prefer-rest-params\r\n const argument = arguments[i];\r\n if (argument !== undefined) {\r\n const reg = new RegExp(`({[${i}]})`, 'g');\r\n result = result.replace(reg, argument);\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function getURLParameter(sParam) {\r\n const getParaFromUrl = $.address.parameter(sParam);\r\n if (getParaFromUrl !== '' && getParaFromUrl !== undefined) {\r\n return decodeURI(getParaFromUrl);\r\n }\r\n const sPageURL = window.location.search.substring(1);\r\n const sURLVariables = sPageURL.split('&');\r\n for (let i = 0; i < sURLVariables.length; i += 1) {\r\n const sParameterName = sURLVariables[i].split('=');\r\n if (sParameterName[0] === sParam) {\r\n return decodeURI(sParameterName[1]);\r\n }\r\n }\r\n return '';\r\n}\r\n/**\r\n *\r\n * @param {*} str value\r\n * @param {*} type 'num' 'engnum' 'mail' 'mobile' 'htmltag'\r\n * @returns\r\n */\r\nexport function verityInput(str, type) {\r\n const regNum = /^[0-9]+$/;\r\n const regEngNum = /^[A-Za-z0-9]+$/;\r\n const regex = /[\"><`"‵<>]$/g;\r\n switch (type) {\r\n case 'num':\r\n return regNum.test(str);\r\n case 'engnum':\r\n return regEngNum.test(str);\r\n case 'mail':\r\n return window.anteater.Validate.isEmail(str);\r\n case 'mobile':\r\n return window.anteater.Validate.isMobileNumber(str);\r\n case 'htmltag':\r\n return !regex.test(str);\r\n default:\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * verityInput regex\r\n * @returns\r\n */\r\nexport function getSpecialTip() {\r\n const reg = '\"><`"‵<>';\r\n return `請勿輸入特殊符號!${reg}`;\r\n}\r\n\r\nexport default {\r\n tmpl,\r\n getQueryString,\r\n setVCode,\r\n padLeft,\r\n loadingView,\r\n setGA,\r\n stringFormat,\r\n getURLParameter,\r\n verityInput,\r\n getSpecialTip,\r\n};\r\n","import { EventEmitter } from 'events';\r\nimport { tmpl } from '@/utils/util-extent';\r\n\r\nconst { $ } = window;\r\n\r\nexport default class TestDriveRecord extends EventEmitter {\r\n constructor($container, data, tel, email) {\r\n super();\r\n this.loading = false;\r\n this.data = data;\r\n this.tel = tel;\r\n this.email = email;\r\n\r\n this.$target = $(tmpl($('#template-testdrive-record').html(), data));\r\n // const itemTmpl = $('#template-testdrive-record-item').html();\r\n // const $items = this.$target.find('.items');\r\n // Object.keys(data.DATA).forEach((key) => {\r\n // $items.append($(tmpl(itemTmpl, data.DATA[key])));\r\n // });\r\n const $cancelBtn = this.$target.find('.result-action, .result-actions');\r\n if (data.CNACELABLE && data.CNACELABLE === 'Y') {\r\n $cancelBtn.on('click', this.onCancelClick.bind(this));\r\n } else {\r\n $cancelBtn.find('a').hide();\r\n }\r\n const ishide = data.TYPE==='2';\r\n if (ishide) {\r\n this.$target.find(\".testdrive-expect-date\").hide();\r\n this.$target.find(\".testdrive-actual-date\").hide();\r\n } else {\r\n this.$target.find(\".testdrive-expect-date\").show();\r\n this.$target.find(\".testdrive-actual-date\").show();\r\n }\r\n $container.append(this.$target);\r\n }\r\n\r\n onCancelClick() {\r\n // eslint-disable-next-line no-restricted-globals\r\n if (confirm('確定要取消預約嗎?')) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n // gaev('btn', 'click', 'btn_testdrive_cancel');\r\n $.ajax({\r\n url: 'api/testdrive_cancel.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data: {\r\n ID: this.data.ID,\r\n TEL: this.tel,\r\n EMAIL: this.email,\r\n },\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n this.$target.remove();\r\n alert('已取消預約!');\r\n this.emit(TestDriveRecord.CANCEL);\r\n } else {\r\n alert(e.RS);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n this.loading = false;\r\n });\r\n }\r\n }\r\n}\r\nTestDriveRecord.CANCEL = 'TestDriveRecord.Cancel';\r\n","/* eslint-disable no-alert */\r\nimport TestDriveRecord from '@/components/module/TestDriveRecord';\r\nimport TestDriveCore from '@/components/module/TestDriveCore';\r\nimport { verityInput } from '@/utils/util-extent';\r\n\r\nconst { $, location } = window;\r\n\r\nexport default class TestDriveSearch {\r\n constructor() {\r\n this.loading = false;\r\n this.$searchContent = $('.testdrive-search-content');\r\n this.$recordContent = $('.testdrive-record-content');\r\n this.$records = $('.testdrive-record-content .test-drive-result-list');\r\n\r\n this.$recordContent.hide();\r\n this.$searchContent.find('form').on('submit', this.onSearch.bind(this));\r\n // $('.test-drive-inquire-form button').on('click', this.onSearch.bind(this));\r\n this.initVaild();\r\n }\r\n\r\n initVaild() {\r\n this.$searchContent.find('#inputEmail').on('change', function change() {\r\n TestDriveCore.vaildity($(this), '無效的Email');\r\n });\r\n\r\n this.$searchContent.find('#inputPhone').on('change', function change() {\r\n TestDriveCore.vaildity($(this), '請輸入電話');\r\n });\r\n }\r\n\r\n onSearch(e) {\r\n // gaev('btn', 'click', 'btn_testdrive_search');\r\n if (e) e.preventDefault();\r\n\r\n const data = {};\r\n\r\n data.TEL = $('#inputPhone').val();\r\n if (!TestDriveCore.vaildity(this.$searchContent.find('#inputPhone'), '請輸入完整電話!', verityInput(data.TEL, 'num') === false)) {\r\n return;\r\n }\r\n data.EMAIL = $('#inputEmail').val();\r\n if (!TestDriveCore.vaildity(this.$searchContent.find('#inputEmail'), '無效的Email')) {\r\n return;\r\n }\r\n\r\n this.search(data);\r\n }\r\n\r\n search(data) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n $.ajax({\r\n url: 'api/testdrive_search.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n this.showRecord(e.DATA, data);\r\n } else {\r\n alert(e.RS);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n showRecord(data, extraData) {\r\n this.$records.empty();\r\n let record;\r\n data.forEach((element) => {\r\n const item = element;\r\n record = new TestDriveRecord(this.$records, item, extraData.TEL, extraData.EMAIL);\r\n record.on(TestDriveRecord.CANCEL, this.onRecordCanceled.bind(this));\r\n });\r\n this.$recordContent.find('#labphone').text(extraData.TEL);\r\n this.$recordContent.find('#labmail').text(extraData.EMAIL);\r\n this.$recordContent.show();\r\n this.$searchContent.hide();\r\n }\r\n\r\n onRecordCanceled() {\r\n const len = this.$records.children().length;\r\n if (len < 1) {\r\n // alert(\"查無紀錄\");\r\n // location.reload();\r\n location.href = 'testdrive.aspx';\r\n }\r\n }\r\n}\r\n","import '~/sass/pages/test-drive-inquire.scss';\r\nimport TestDriveSearch from '@/components/module/TestDriveSearch';\r\n\r\nconst { $ } = window;\r\n\r\n$(() => {\r\n // eslint-disable-next-line no-unused-vars\r\n const testDriveSearch = new TestDriveSearch();\r\n});\r\n","/* eslint-disable no-alert */\r\n// require('asset/lib/anteater/util/anteater.validate.min.js');\r\nimport {\r\n tmpl, getQueryString, setVCode, verityInput,\r\n} from '@/utils/util-extent';\r\n// const DateSelector = require('../util/DateSelector.js');\r\nimport LocationViewer from '@/components/module/LocationViewer';\r\n// const CarSelector = require('../calculator/CarSelector.js');\r\n// const carSelector = new CarSelector(false);\r\nimport { isMobile } from '@/utils/device';\r\nimport moment from 'moment';\r\n\r\nconst { $, location } = window;\r\n\r\n// const ONE_DAY = 1000 * 60 * 60 * 24;\r\n// const ONE_HOUR = 1000 * 60 * 60;\r\nconst TIME_DATA = [\r\n {\r\n value: '',\r\n time: '-1',\r\n label: '請選擇時段',\r\n },\r\n {\r\n value: '0',\r\n time: '8',\r\n label: '08:00 ~ 10:00',\r\n },\r\n {\r\n value: '1',\r\n time: '10',\r\n label: '10:00 ~ 12:00',\r\n },\r\n {\r\n value: '2',\r\n time: '12',\r\n label: '12:00 ~ 14:00',\r\n },\r\n {\r\n value: '3',\r\n time: '14',\r\n label: '14:00 ~ 16:00',\r\n },\r\n];\r\n// 即刻預約試乘車種\r\nconst InstantCar = ['RAV4', 'COROLLA_CROSS', 'ALTIS', 'YARISCROSS'];\r\n\r\nexport default class TestDriveCore {\r\n constructor(opt = {}) {\r\n this.opt = $.extend({\r\n showMap: true,\r\n demoMode: false,\r\n cnyLimit: true,\r\n }, opt);\r\n this.$main = $('.main-wrapper');\r\n this.$groupDatetime = this.$main.find('#groupDatetime');\r\n this.loading = false;\r\n this.CRUrl = 'api/testdrive_sales.ashx';\r\n this.vaildUrl = 'api/testdrive_vaild.ashx';\r\n this.submitUrl = 'api/testdrive_submit.ashx';\r\n this.Url = 'api/testdrive_sales.ashx';\r\n this.getExcludeData();\r\n this.isInstant = false;\r\n this.instantUrl = 'api/testdrive_instantTime.ashx';\r\n this.carlist = [];\r\n this.userData = [];\r\n this.isLogin = false;\r\n }\r\n\r\n getExcludeData() {\r\n $.ajax({\r\n url: 'api/testdrive_expcars.ashx',\r\n type: 'GET',\r\n dataType: 'json',\r\n cache: 'false',\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n this.excludeData = e.DATA;\r\n TestDriveCore.setExcludeNoticeWords(e.NOTICE);\r\n this.ready();\r\n } else {\r\n console.log(e.RS);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n });\r\n }\r\n\r\n // todo\r\n static setExcludeNoticeWords(notice) {\r\n $('.testdrive-content .notice .exclude').html(notice);\r\n }\r\n\r\n ready() {\r\n const self = this;\r\n $.address.change(this.onAddressChange.bind(this));\r\n this.locationViewer = new LocationViewer('1', this.$main, {\r\n isScrollListByMarker: true,\r\n isListItemCheckable: true,\r\n showMap: this.opt.showMap,\r\n });\r\n\r\n TestDriveCore.initDateSel(this.getDisabledDates());\r\n\r\n this.updateVCode();\r\n\r\n this.initDateTime();\r\n this.initInstTime();\r\n\r\n // 是否需要業務事件\r\n this.$main.find('input[name=isCarOwner]').on('click', (e) => {\r\n const ishide = $(e.target).val() === 'false';\r\n if (ishide) {\r\n this.$main.find('#crRow').hide();\r\n } else {\r\n this.$main.find('#crRow').show();\r\n }\r\n });\r\n this.$main.find('#crRow').hide();\r\n\r\n // 引擎顯示並確認驗證\r\n this.$main.find('#testDriveCar').on('change', function change() {\r\n if ($(this).val() !== null && $(this).val() !== '') {\r\n location.replace(`${$.address.baseURL()}#/${$(this).val()}`);\r\n self.locationViewer.checkedItemData = null;\r\n // eng\r\n const $emgGroup = $('#carEngs');\r\n $emgGroup.show();\r\n const engs = $(this).find(':selected').data('eng').toString()\r\n .split(',');\r\n $emgGroup.find('.custom-radio').each((index, element) => {\r\n const value = $(element).find('input').val().toString();\r\n if (engs.indexOf(value) > -1) {\r\n $(element).show();\r\n } else {\r\n $(element).hide();\r\n $(element).find('input').get(0).setCustomValidity(''); // 隱藏則移除驗證\r\n }\r\n });\r\n $emgGroup.find('input').prop('checked', false);\r\n self.$main.find('input[name=careng]:visible').first().prop('checked', true);\r\n }\r\n });\r\n\r\n // 選擇服務項目\r\n this.$main.find('#serviceTestDrive').on('change', function change() {\r\n const carid = self.getSelectedCarId();\r\n // console.log(carid);\r\n if ($(this).prop('checked')) {\r\n // 是否為即刻試乘車種\r\n if (InstantCar.indexOf(carid) > -1) {\r\n self.isInstant = true;\r\n self.$main.find('#groupDatetime').hide();\r\n self.$main.find('#instantDatetime').show();\r\n if (!self.isLogin) {\r\n self.checkLogin();\r\n } else {\r\n $('#inputInstDate').trigger('change');\r\n }\r\n } else {\r\n self.isInstant = false;\r\n self.$main.find('#groupDatetime').show();\r\n self.$main.find('#instantDatetime').hide();\r\n }\r\n } else {\r\n self.initDateHide();\r\n }\r\n });\r\n\r\n // 選擇試乘據點\r\n $('#store-list').on('change', 'input[type=radio]', (e) => {\r\n if (self.isInstant) {\r\n // 即時試乘\r\n const instdata = {};\r\n let careng = '';\r\n if ($('input[name=careng]:checked').val() === '10') {\r\n careng = 'HYBRID';\r\n }\r\n const $obj = this.$main.find('#testDriveCar');\r\n const cartxt = $obj.find(':selected').text().toString();\r\n instdata.carname = `${cartxt} ${careng}`;\r\n instdata.qrydate = self.$main.find('#inputInstDate').val().replace(/-/g, '');\r\n instdata.dlrcd = $(e.target).val().substr(0, 1);\r\n instdata.brnhcd = $(e.target).val().substr(1, 2);\r\n instdata.dlrbrn = $(e.target).val();\r\n // console.log(instdata);\r\n this.getInstTimes(instdata);\r\n }\r\n });\r\n\r\n // 即時試乘-選擇期望試乘時間\r\n this.$main.find('#inputInstDate').on('change', (e) => {\r\n const itemData = self.locationViewer.checkedItemData;\r\n if (!itemData) {\r\n const chooseStoreElement = this.$main.find('[name=\"chooseStore\"]');\r\n // 判斷據點清單是否存在\r\n if (chooseStoreElement.length) {\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('請選擇試乘據點');\r\n this.$main.find('[name=\"chooseStore\"]').get(0).reportValidity();\r\n console.log('請選擇試乘據點');\r\n } else {\r\n // search-filter-city\r\n this.$main.find('.search-filter-city select').get(0).setCustomValidity('請搜尋試乘或諮詢據點並選擇據點');\r\n this.$main.find('.search-filter-city select').get(0).reportValidity();\r\n console.log('請搜尋試乘或諮詢據點並選擇據點');\r\n }\r\n return;\r\n }\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('');\r\n const loc = self.locationViewer.checkedItemData.key;\r\n if (self.isInstant) {\r\n const instdata = {};\r\n let careng = '';\r\n if ($('input[name=careng]:checked').val() === '10') {\r\n careng = 'HYBRID';\r\n }\r\n const $obj = this.$main.find('#testDriveCar');\r\n const cartxt = $obj.find(':selected').text().toString();\r\n instdata.carname = `${cartxt} ${careng}`;\r\n instdata.qrydate = $(e.target).val().replace(/-/g, '');\r\n instdata.dlrcd = loc.substr(0, 1);\r\n instdata.brnhcd = loc.substr(1, 2);\r\n instdata.dlrbrn = loc;\r\n console.log(instdata);\r\n this.getInstTimes(instdata);\r\n }\r\n });\r\n\r\n this.$main.find('#instantDatetime').hide();\r\n this.$main.find('#groupDatetime').hide();\r\n this.$main.find('#carEngs').hide();\r\n\r\n // this.$main.find('#crRow input, #crRow button').prop('disabled', true);\r\n\r\n this.$main.find('#crResult').hide();\r\n // 查詢業務\r\n this.$main.find('#recaptcha-query').on('click', this.onClickQuery.bind(this));\r\n this.$main.find('#recaptcha-reload').on('click', this.updateVCode.bind(this));\r\n // 送出\r\n this.$main.find('#testDriveForm').on('submit', this.onSubmit.bind(this));\r\n $('#vailForm #submitBtn').on('click', this.onVail.bind(this));\r\n // 請專人聯繫\r\n $('#errMsgContact').on('click', () => {\r\n self.isInstant = false;\r\n self.$main.find('#groupDatetime').show();\r\n self.$main.find('#instantDatetime').hide();\r\n $('#errMsgClose').trigger('click');\r\n });\r\n // 重新選擇\r\n $('#errMsgReselect').on('click', () => {\r\n self.isInstant = true;\r\n $('#errMsgClose').trigger('click');\r\n });\r\n\r\n\r\n if (this.opt.cnyLimit) TestDriveCore.showCNYLimitAlert();\r\n $.address.update();\r\n this.$main.find('#testDriveCar').trigger('change');\r\n // this.$main.find('#instantDatetime select').trigger('click');\r\n self.checkTDV();\r\n this.initVaild();\r\n\r\n // 輸入驗證碼跳位置\r\n $('.form-verification-code').keyup(function key() {\r\n if (this.value.length === this.maxLength) {\r\n $(this).next('input').focus();\r\n }\r\n });\r\n }\r\n\r\n static showCNYLimitAlert(delay = 500) {\r\n console.log(delay);\r\n // setTimeout(() => {\r\n // alert('因應春節期間人員休假,目前暫不開放1/22~1/30的預約時段,如您於春節期間預約試乘,1/31起將有專人與您聯繫,確認預約事宜。造成不便敬請見諒。');\r\n // }, delay);\r\n }\r\n\r\n updateVCode(isSetFocus = false) {\r\n this.$main.find('#recaptcha').val('');\r\n setVCode(this.$main.find('#recaptcha-img'));\r\n if (isSetFocus) this.$main.find('#recaptcha').focus();\r\n }\r\n\r\n // 排除日期\r\n getDisabledDates() {\r\n if (this.opt.cnyLimit) {\r\n // 過年\r\n let tomorrow = new Date();\r\n const dates = [];\r\n for (let index = 0; index < 7; index += 1) {\r\n tomorrow = moment('2024-02-08').add(index, 'days');\r\n dates.push(tomorrow.format('YYYY-MM-DD'));\r\n }\r\n return dates;\r\n }\r\n return [];\r\n }\r\n\r\n static initDateSel(disabledDates) {\r\n const now = TestDriveCore.getNow();\r\n // 所有車款預約時間皆改為N+2;但如果下午6點後預約則是N+3。\r\n // EX: 11/15 10:00預約,提供11/17試乘選擇。11/15 18:00後預約,提供11/18試乘選擇。\r\n const maxHr = 18;\r\n const startDay = (now.getHours() < maxHr) ? 2 : 3;\r\n // 需判斷不在時間內 過年 2023/1/19 ~ 2023/1/30\r\n let minDate = moment().add(startDay, 'days');\r\n if (minDate.isBetween('2024-02-08', '2024-02-14')) {\r\n minDate = moment('2024-02-15');\r\n }\r\n const maxDate = moment().add(21, 'days');\r\n\r\n const dates = $('.js-test-drive-date');\r\n\r\n dates.each((index, el) => {\r\n $(el).val(minDate.format('YYYY-MM-DD'));\r\n\r\n $(el).datepicker({\r\n format: 'yyyy-mm-dd',\r\n weekStart: 0,\r\n startDate: minDate.format('YYYY-MM-DD'),\r\n endDate: maxDate.format('YYYY-MM-DD'),\r\n maxViewMode: 2,\r\n language: 'zh-TW',\r\n autoclose: true,\r\n defaultDate: new Date(),\r\n datesDisabled: disabledDates,\r\n })\r\n .on('show', (event) => {\r\n const target = $(event.currentTarget);\r\n target.addClass('focused');\r\n })\r\n .on('hide', (event) => {\r\n const target = $(event.currentTarget);\r\n target.removeClass('focused');\r\n });\r\n\r\n $(el).addClass('form-control-date');\r\n\r\n $(el).on('click', () => {\r\n $(el).datepicker('show');\r\n });\r\n });\r\n }\r\n\r\n initDateTime() {\r\n this.$groupDatetime.find('select').empty();\r\n for (let i = 0; i < TIME_DATA.length; i += 1) {\r\n const timeData = TIME_DATA[i];\r\n const tmplHtml = (timeData.value === '-1') ? '' : '\"';\r\n const option = tmpl(tmplHtml, {\r\n VALUE: timeData.value,\r\n LABEL: timeData.label,\r\n });\r\n this.$groupDatetime.find('select').append(option);\r\n }\r\n }\r\n\r\n setCarType() {\r\n const carid = $.address.pathNames()[0];\r\n const $carType = this.$main.find('#testDriveCar');\r\n if (carid && carid !== '') {\r\n $carType.val(carid);\r\n }\r\n }\r\n\r\n getSelectedCarId() {\r\n const $carType = this.$main.find('#testDriveCar');\r\n if ($carType.val() !== '') {\r\n return $carType.val();\r\n }\r\n return $.address.pathNames()[0];\r\n }\r\n\r\n // 選車後篩據點 by MarkVann\r\n onAddressChange() {\r\n this.setCarType();\r\n const carid = this.getSelectedCarId();\r\n const [data] = this.excludeData.filter(({ id }) => (id === carid));\r\n if (!data) this.locationViewer.updateFilter();\r\n else if (data.city) this.locationViewer.excludeCities(data.city);\r\n else if (data.store) this.locationViewer.targetStores(data.store);\r\n }\r\n\r\n onSubmit(e) {\r\n if (e) e.preventDefault();\r\n\r\n // gaev('btn', 'click', 'btn_testdrive_ok');\r\n\r\n const data = {};\r\n const $serviceTestDrive = this.$main.find('#serviceTestDrive');\r\n const $serviceConsultation = this.$main.find('#serviceConsultation');\r\n if (!$serviceTestDrive.prop('checked') && !$serviceConsultation.prop('checked')) {\r\n if ($serviceTestDrive.prop('disabled')) {\r\n $serviceConsultation.get(0).setCustomValidity('請選擇服務項目');\r\n $serviceConsultation.get(0).reportValidity();\r\n } else {\r\n $serviceTestDrive.get(0).setCustomValidity('請選擇服務項目');\r\n $serviceTestDrive.get(0).reportValidity();\r\n }\r\n\r\n return;\r\n }\r\n $serviceTestDrive.get(0).setCustomValidity('');\r\n $serviceConsultation.get(0).setCustomValidity('');\r\n\r\n const choicServiceTestDrive = this.$main.find('#serviceTestDrive').prop('checked') ? this.$main.find('#serviceTestDrive').val() : 0;\r\n const choicServiceConsultation = this.$main.find('#serviceConsultation').prop('checked') ? this.$main.find('#serviceConsultation').val() : 0;\r\n data.TPY = Number.parseInt(choicServiceTestDrive, 10) + Number.parseInt(choicServiceConsultation, 10);\r\n\r\n data.CAR = this.getSelectedCarId();\r\n\r\n if (!TestDriveCore.vaildity(this.$main.find('#testDriveCar'), '請選擇試乘車款')) {\r\n console.log('請選擇試乘車款');\r\n return;\r\n }\r\n\r\n data.NAME = $('#inputName').val();\r\n\r\n if (!TestDriveCore.vaildity(this.$main.find('#inputName'), '請輸入中英文!', verityInput(data.NAME, 'htmltag') === false)) {\r\n console.log('請輸入中英文!');\r\n return;\r\n }\r\n\r\n if (this.$main.find('input[name=inputGender]:checked').length === 0) {\r\n this.$main.find('input[name=inputGender]').get(0).setCustomValidity('請選擇性別');\r\n this.$main.find('input[name=inputGender]').get(0).reportValidity();\r\n console.log('請選擇性別');\r\n return;\r\n }\r\n this.$main.find('input[name=inputGender]').get(0).setCustomValidity('');\r\n\r\n data.GENDER = $('input[name=inputGender]:checked').val();\r\n\r\n if (this.$main.find('input[name=careng]:checked').length === 0) {\r\n this.$main.find('input[name=careng]:visible').get(0).setCustomValidity('請選擇引擎');\r\n this.$main.find('input[name=careng]:visible').get(0).reportValidity();\r\n console.log('請選擇引擎');\r\n return;\r\n }\r\n this.$main.find('input[name=careng]').each((index, element) => {\r\n element.setCustomValidity('');\r\n });\r\n\r\n data.ENG = $('input[name=careng]:checked').val();\r\n data.ENGString = $(`label[for=${$('input[name=careng]:checked').attr('id')}]`).text();\r\n\r\n data.EMAIL = $('#inputEmail').val();\r\n\r\n if (!TestDriveCore.vaildity(this.$main.find('#inputEmail'), '無效的Email')) {\r\n console.log('無效的Email');\r\n return;\r\n }\r\n\r\n data.TEL = $('#inputPhone').val();\r\n\r\n if (!TestDriveCore.vaildity(this.$main.find('#inputPhone'), '請輸入完整電話!', verityInput(data.TEL, 'num') === false)) {\r\n console.log('請輸入電話');\r\n return;\r\n }\r\n\r\n if (this.$main.find('input[name=inputContactTime]:checked').length === 0) {\r\n this.$main.find('input[name=inputContactTime]').get(0).setCustomValidity('請選擇聯絡時間');\r\n this.$main.find('input[name=inputContactTime]').get(0).reportValidity();\r\n console.log('請選擇聯絡時間');\r\n return;\r\n }\r\n this.$main.find('input[name=inputContactTime]').get(0).setCustomValidity('');\r\n data.CONTACT_TIME = $('input[name=inputContactTime]:checked').val();\r\n console.log(`聯絡時間:${$('input[name=inputContactTime]:checked').val()}`);\r\n\r\n if (this.$main.find('#serviceTestDrive').prop('checked')) {\r\n let isVaildity = false;\r\n if (this.isInstant) {\r\n this.$main.find('#instantDatetime input').each((i, element) => {\r\n if (!TestDriveCore.vaildity($(element), '請選擇期望日期')) {\r\n isVaildity = true;\r\n }\r\n });\r\n this.$main.find('#instantDatetime select').each((i, element) => {\r\n if (!TestDriveCore.vaildity($(element), '請選擇期望時間')) {\r\n isVaildity = true;\r\n }\r\n });\r\n if (isVaildity) {\r\n console.log('請選擇期望時間');\r\n return;\r\n }\r\n data.isInstant = 'T';\r\n data.DATE = this.$main.find('#inputInstDate').val();\r\n data.TIME = this.$main.find('#selectInstTime').val();\r\n data.rsvstdt = $('#selectInstTime').find(':selected').data('cartime').toString();\r\n data.hdbrnhcd = $('#selectInstTime').find(':selected').data('branch').toString();\r\n data.rsvendt = $('#selectInstTime').find(':selected').data('endtime').toString();\r\n const filteredCarList = this.carlist.filter((car) => car.CARHDBRNHCD === data.hdbrnhcd);\r\n // console.log(filteredCarList);\r\n if (filteredCarList.length >= 1) {\r\n const carSel = filteredCarList[0];\r\n data.engno = carSel.CAREGNO;\r\n data.iseq = carSel.CARISEQ;\r\n data.cardlrcd = carSel.CARDLRCD;\r\n }\r\n // data.custid = this.userData.custid;\r\n // data.custName = this.userData.custName;\r\n // data.custMobile = this.userData.custMobile;\r\n // data.custsex = this.userData.custsex;\r\n // data.custemail = this.userData.custemail;\r\n } else {\r\n this.$main.find('#groupDatetime input').each((i, element) => {\r\n if (!TestDriveCore.vaildity($(element), '請選擇期望日期')) {\r\n isVaildity = true;\r\n }\r\n });\r\n this.$main.find('#groupDatetime select').each((i, element) => {\r\n if (!TestDriveCore.vaildity($(element), '請選擇期望時間')) {\r\n isVaildity = true;\r\n }\r\n });\r\n if (isVaildity) {\r\n console.log('請選擇期望時間');\r\n return;\r\n }\r\n data.isInstant = 'F';\r\n data.DATE = this.$main.find('#inputDate1').val();\r\n data.TIME = this.$main.find('#selectTime1').val();\r\n data.DATE2 = this.$main.find('#inputDate2').val();\r\n data.TIME2 = this.$main.find('#selectTime2').val();\r\n data.DATE3 = this.$main.find('#inputDate3').val();\r\n data.TIME3 = this.$main.find('#selectTime3').val();\r\n }\r\n }\r\n\r\n if (this.$main.find('[name=\"chooseStore\"]').length === 0) {\r\n // search-filter-city\r\n this.$main.find('.search-filter-city select').get(0).setCustomValidity('請搜尋試乘或諮詢據點並選擇據點');\r\n this.$main.find('.search-filter-city select').get(0).reportValidity();\r\n console.log('請搜尋試乘或諮詢據點並選擇據點');\r\n return;\r\n }\r\n\r\n this.$main.find('.search-filter-city select').get(0).setCustomValidity('');\r\n data.checkedItemData = this.locationViewer.checkedItemData;\r\n if (!data.checkedItemData) {\r\n //\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('請選擇試乘據點');\r\n this.$main.find('[name=\"chooseStore\"]').get(0).reportValidity();\r\n console.log('請選擇試乘據點');\r\n return;\r\n }\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('');\r\n\r\n data.LOC = data.checkedItemData.key;\r\n\r\n\r\n if (this.$main.find('input[name=useFormerSalesman]:checked').val() === true) {\r\n data.sales = this.$main.find('#dspresult').text();\r\n }\r\n\r\n if (!$('#agreeTerms').prop('checked')) {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('請先閱讀並同意試乘條款');\r\n this.$main.find('[type=\"submit\"]').get(0).reportValidity();\r\n console.log('請先閱讀並同意試乘條款');\r\n return;\r\n }\r\n\r\n if (!$('#agreePrivacy').prop('checked')) {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('請先閱讀並同意TOYOTA官網隱私權條款');\r\n this.$main.find('[type=\"submit\"]').get(0).reportValidity();\r\n console.log('請先閱讀並同意TOYOTA官網隱私權條款');\r\n return;\r\n }\r\n\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('');\r\n\r\n data.EDM = '0'; // $('#agreeTerms').prop('checked') ? '1' : '0';\r\n\r\n if (getQueryString('event')) {\r\n data.EVENT = getQueryString('event');\r\n }\r\n\r\n // 需簡訊驗證\r\n this.vail(data);\r\n $('#labPhone').text(data.TEL);\r\n // return false;\r\n }\r\n\r\n initVaild() {\r\n const self = this;\r\n this.$main.find('#serviceTestDrive,#serviceConsultation').on('change', () => {\r\n const $serviceTestDrive = this.$main.find('#serviceTestDrive');\r\n const $serviceConsultation = this.$main.find('#serviceConsultation');\r\n if (!$serviceTestDrive.prop('checked') && !$serviceConsultation.prop('checked')) {\r\n if ($serviceTestDrive.prop('disabled')) {\r\n $serviceConsultation.get(0).setCustomValidity('請選擇服務項目');\r\n $serviceConsultation.get(0).reportValidity();\r\n } else {\r\n $serviceTestDrive.get(0).setCustomValidity('請選擇服務項目');\r\n $serviceTestDrive.get(0).reportValidity();\r\n }\r\n } else {\r\n $serviceTestDrive.get(0).setCustomValidity('');\r\n $serviceConsultation.get(0).setCustomValidity('');\r\n }\r\n });\r\n\r\n this.$main.find('#testDriveCar').on('change', () => {\r\n // 利用延遲才有辦法產生效果\r\n setTimeout(() => {\r\n if (!TestDriveCore.vaildity(self.$main.find('#testDriveCar'), '請選擇試乘車款')) {\r\n console.log('請選擇試乘車款');\r\n return;\r\n }\r\n self.checkTDV();\r\n }, 500);\r\n });\r\n\r\n this.$main.find('input[name=careng]').on('change', function change() {\r\n $(this).get(0).setCustomValidity('');\r\n });\r\n\r\n this.$main.find('#inputName').on('change', function change() {\r\n TestDriveCore.vaildity($(this), '請輸入姓名');\r\n });\r\n\r\n this.$main.find('input[name=inputGender]').on('change', () => {\r\n this.$main.find('input[name=inputGender]').get(0).setCustomValidity('');\r\n });\r\n\r\n // inputContactTime\r\n this.$main.find('input[name=inputContactTime]').on('change', () => {\r\n this.$main.find('input[name=inputContactTime]').get(0).setCustomValidity('');\r\n });\r\n\r\n this.$main.find('#inputEmail').on('change', function change() {\r\n TestDriveCore.vaildity($(this), '無效的Email');\r\n });\r\n\r\n this.$main.find('#inputPhone').on('change', function change() {\r\n TestDriveCore.vaildity($(this), '請輸入電話');\r\n });\r\n\r\n this.$main.find('#groupDatetime input').on('change', function date() {\r\n TestDriveCore.vaildity($(this), '請選擇期望日期');\r\n });\r\n\r\n this.$main.find('#groupDatetime select').on('change', function time() {\r\n TestDriveCore.vaildity($(this), '請選擇期望時間');\r\n });\r\n\r\n this.locationViewer.on(LocationViewer.LIST_ITEM_CHECK, (data) => {\r\n if (!data) {\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('請選擇試乘據點');\r\n this.$main.find('[name=\"chooseStore\"]').get(0).reportValidity();\r\n } else {\r\n this.$main.find('[name=\"chooseStore\"]').get(0).setCustomValidity('');\r\n this.$main.find('.search-filter-city select').get(0).setCustomValidity('');\r\n }\r\n });\r\n\r\n this.$main.find('#groupDatetime select').on('change', function time() {\r\n TestDriveCore.vaildity($(this), '請選擇期望時間');\r\n });\r\n\r\n this.$main.find('#instantDatetime select').on('change', function time() {\r\n TestDriveCore.vaildity($(this), '請選擇期望時間');\r\n });\r\n\r\n this.$main.find('#agreeTerms').on('change', (e) => {\r\n if (!$(e.target).prop('checked')) {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('請先閱讀並同意試乘條款');\r\n this.$main.find('[type=\"submit\"]').get(0).reportValidity();\r\n } else {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('');\r\n }\r\n });\r\n\r\n this.$main.find('#agreePrivacy').on('change', (e) => {\r\n if (!$(e.target).prop('checked')) {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('請先閱讀並同意TOYOTA官網隱私權條款');\r\n this.$main.find('[type=\"submit\"]').get(0).reportValidity();\r\n } else {\r\n this.$main.find('[type=\"submit\"]').get(0).setCustomValidity('');\r\n }\r\n });\r\n }\r\n\r\n vail(data) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n $.ajax({\r\n url: this.vaildUrl,\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n this.submidata = data;\r\n $('[data-src=\"#test-drive-vaild\"]').trigger('click');\r\n this.timeInterval();\r\n } else {\r\n alert(e.ERROR);\r\n if (e.LOGINURL !== '') window.location.replace(e.LOGINURL);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onVail(e) {\r\n if (e) e.preventDefault();\r\n let phoneCode = '';\r\n $('.form-verification-code').each((i, element) => {\r\n phoneCode += $(element).val().trim();\r\n });\r\n if (phoneCode.length < 4) {\r\n alert('請輸入驗證碼!');\r\n return;\r\n }\r\n if (this.timer != null) {\r\n clearInterval(this.timer);\r\n this.timer = null;\r\n }\r\n this.submidata.checkedItemData = `${this.submidata.checkedItemData.city + this.submidata.checkedItemData.area} - ${this.submidata.checkedItemData.title}`;\r\n this.submidata.phoneCode = phoneCode;\r\n if (this.isInstant) {\r\n this.addPostRsv(this.submidata);\r\n } else { this.submit(this.submidata); }\r\n }\r\n\r\n submit(data) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n $.ajax({\r\n url: this.submitUrl,\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n })\r\n .done((e) => {\r\n let eventLabel = '';\r\n if (e.RS === 'OK') {\r\n eventLabel = 'success';\r\n } else {\r\n eventLabel = 'failed';\r\n }\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n event: 'testdriveCar',\r\n event_car: data.CAR, // 車款名稱\r\n event_label: eventLabel, // 如預約成功填入'success',預約失敗填入'failed'\r\n event_engine: data.ENGString, // 引擎類別\r\n });\r\n }\r\n if (e.RS === 'OK') {\r\n alert('預約成功');\r\n location.href = 'testdrive_search.aspx';\r\n } else {\r\n alert(e.RS);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n this.loading = false;\r\n $.fancybox.close();\r\n $('.form-verification-code').each((i, element) => {\r\n $(element).val('');\r\n });\r\n });\r\n }\r\n\r\n // ?\r\n static onSubmitComplete(data, rsDATA) {\r\n // gapv('testdrive_result.aspx#/{CAR}'.replace(/{CAR}/g, data.CAR));\r\n\r\n // dataLayer.push({'event': 'SubmitForm'});\r\n const $complete = $(tmpl(\r\n $('#template-testdrive-complete-content').html(),\r\n {\r\n NAME: data.NAME,\r\n CARID: data.CAR,\r\n TIME: `${data.DATE} ${data.timeStr}`,\r\n LOCATION: `${data.checkedItemData.city + data.checkedItemData.area} - ${data.checkedItemData.title}`,\r\n },\r\n ));\r\n $complete.find('a.addto-calender').attr({\r\n href: !isMobile() ? rsDATA.EVENT_LINK : rsDATA.EVENT_ICS,\r\n target: !isMobile() ? '_blank' : 'self',\r\n onclick: \"gaev('btn', 'click', 'testdrive_add_btn');\",\r\n });\r\n const carid = this.getSelectedCarId();\r\n switch (carid) {\r\n case 'PRIUS_PHV':\r\n default:\r\n $complete.find('a.limitedcar-couvailditypon').remove();\r\n }\r\n\r\n $('.page-content').empty().append($complete);\r\n window.TheModel.scrollTop(0, 100);\r\n }\r\n\r\n onClickQuery() {\r\n $.ajax({\r\n url: this.CRUrl,\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data: { LICSNO: `${$('#platFirst').val()}-${$('#platLast').val()}`, vcode: $('#recaptcha').val() },\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n $('#dspresult').text(e.DSPRESULT);\r\n $('#crResult').show();\r\n } else {\r\n this.$main.find('#recaptcha').get(0).setCustomValidity(e.RS);\r\n this.$main.find('#recaptcha').get(0).reportValidity();\r\n // setTimeout(() => {\r\n // this.$main.find('#recaptcha').get(0).setCustomValidity('');\r\n // }, 1000);\r\n }\r\n this.updateVCode(true);\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n });\r\n }\r\n\r\n static vaildity($obj, message, isVaild = false) {\r\n if (!$obj || $obj.length === 0) {\r\n console.log('vaildity unfind !');\r\n } else if ($obj.get(0).value === '' || isVaild) {\r\n $obj.get(0).setCustomValidity(message);\r\n $obj.get(0).reportValidity();\r\n } else {\r\n $obj.get(0).setCustomValidity('');\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static getNow() {\r\n return new Date();\r\n }\r\n\r\n timeInterval() {\r\n if (this.timer != null) {\r\n clearInterval(this.timer);\r\n this.timer = null;\r\n }\r\n const time = new Date();\r\n time.setMinutes(time.getMinutes() + 5);\r\n const endTime = time.getTime();\r\n this.timer = setInterval(() => {\r\n // 當前時間\r\n const nowTime = new Date().getTime();\r\n\r\n // 差值\r\n const offsetTime = (endTime - nowTime) / 1000; // ** 以秒為單位\r\n const min = parseInt((offsetTime / 60) % 60, 10); // 分\r\n const sec = parseInt(offsetTime % 60, 10); // 秒\r\n $('#viewTime').text(`${TestDriveCore.padLeft(min, 2)}:${TestDriveCore.padLeft(sec, 2)}`);\r\n if (min <= 0 && sec <= 0) {\r\n clearInterval(this.timer);\r\n this.timer = null;\r\n }\r\n }, 200);\r\n }\r\n\r\n static padLeft(str, lenght) {\r\n if (str.toString().length >= lenght) {\r\n return str;\r\n }\r\n return TestDriveCore.padLeft(`0${str}`, lenght);\r\n }\r\n\r\n checkTDV() {\r\n const $obj = this.$main.find('#testDriveCar');\r\n if ($obj.val() === null) {\r\n return true;\r\n }\r\n const $tip = this.$main.find('#noneDrive');\r\n const $serviceTestDrive = this.$main.find('#serviceTestDrive');\r\n const tdv = $obj.find(':selected').data('istdv').toString();\r\n if (tdv === '0') {\r\n $tip.show();\r\n $serviceTestDrive.attr('disabled', true);\r\n $serviceTestDrive.prop('checked', false);\r\n this.initDateHide();\r\n } else {\r\n $tip.hide();\r\n $serviceTestDrive.attr('disabled', false);\r\n // 是否有勾選預約試乘\r\n if (this.$main.find('#serviceTestDrive').prop('checked')) {\r\n // 是否為即刻試乘車種\r\n if (InstantCar.indexOf($obj.val()) > -1) {\r\n this.isInstant = true;\r\n this.$main.find('#groupDatetime').hide();\r\n this.$main.find('#instantDatetime').show();\r\n if (!this.isLogin) {\r\n this.checkLogin();\r\n }\r\n } else {\r\n this.isInstant = false;\r\n this.$main.find('#groupDatetime').show();\r\n this.$main.find('#instantDatetime').hide();\r\n }\r\n } else {\r\n this.initDateHide();\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n initDateHide() {\r\n this.isInstant = false;\r\n this.$main.find('#groupDatetime').hide();\r\n this.$main.find('#instantDatetime').hide();\r\n this.$main.find('#groupDatetime input, #groupDatetime select').each((i, element) => {\r\n $(element).get(0).setCustomValidity('');\r\n });\r\n this.$main.find('#instantDatetime input, #instantDatetime select').each((i, element) => {\r\n $(element).get(0).setCustomValidity('');\r\n });\r\n this.initInstTime();\r\n }\r\n\r\n initInstTime() {\r\n this.$main.find('#instantDatetime').find('select').empty();\r\n const tmplHtml = '';\r\n const option = tmpl(tmplHtml, {\r\n VALUE: '',\r\n LABEL: '請選擇時段',\r\n CARTIME: '',\r\n BRANCH: '',\r\n ENDTIME: '',\r\n });\r\n this.$main.find('#instantDatetime').find('select').append(option);\r\n }\r\n\r\n addInstTime(list) {\r\n list.forEach((timeData) => {\r\n const newHtml = ``;\r\n this.$main.find('#instantDatetime').find('select').append(newHtml);\r\n });\r\n }\r\n\r\n getInstTimes(data) {\r\n $.ajax({\r\n url: this.instantUrl,\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n if (e.DATA.length >= 1) {\r\n const result = e.DATA[0];\r\n this.carlist = result.carList;\r\n this.initInstTime();\r\n this.addInstTime(result.timeList);\r\n }\r\n } else {\r\n // console.log(e.RS);\r\n this.initInstTime();\r\n $('#popup-errMsg').trigger('click');\r\n $('#errMsgTitle').text('目前暫無可預約時段');\r\n $('#errMsgResult').text('');\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n this.initInstTime();\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n });\r\n }\r\n\r\n checkLogin() {\r\n $.ajax({\r\n url: 'api/testdrive_checkLogin.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n })\r\n .done((e) => {\r\n if (e.ReturnCode === '9999') {\r\n // console.log(e.ReturnCode);\r\n alert(`即時預約車款,${e.ReturnMsg}`);\r\n window.location.replace('/owner_login.aspx?xurl=testdrive.aspx');\r\n } else {\r\n console.log(e.ReturnCode);\r\n if (this.isInstant) {\r\n this.isLogin = true;\r\n this.userData = e.ReturnData;\r\n // console.log(this.userData);\r\n }\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n });\r\n }\r\n\r\n addPostRsv(data) {\r\n $.ajax({\r\n url: 'api/testdrive_postRsv.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n this.submidata = data;\r\n // console.log(e.DATA);\r\n if (e.DATA.isSuccess) {\r\n this.submidata.Webusrid = e.WEBUSRID;\r\n this.submidata.seqno = e.DATA.seqno;\r\n this.submit(this.submidata);\r\n } else {\r\n $.fancybox.close();\r\n $('.form-verification-code').each((i, element) => {\r\n $(element).val('');\r\n });\r\n $('#popup-errMsg').trigger('click');\r\n $('#errMsgTitle').text('預約失敗');\r\n $('#errMsgResult').text('該車款暫時無法即刻預約');\r\n }\r\n } else {\r\n console.log(e.WEBUSRID);\r\n $.fancybox.close();\r\n $('.form-verification-code').each((i, element) => {\r\n $(element).val('');\r\n });\r\n $('#popup-errMsg').trigger('click');\r\n $('#errMsgTitle').text('預約失敗');\r\n $('#errMsgResult').text('該車款暫時無法即刻預約');\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n });\r\n }\r\n}\r\n","var map = {\n\t\"./af\": 71,\n\t\"./af.js\": 71,\n\t\"./ar\": 72,\n\t\"./ar-dz\": 73,\n\t\"./ar-dz.js\": 73,\n\t\"./ar-kw\": 74,\n\t\"./ar-kw.js\": 74,\n\t\"./ar-ly\": 75,\n\t\"./ar-ly.js\": 75,\n\t\"./ar-ma\": 76,\n\t\"./ar-ma.js\": 76,\n\t\"./ar-sa\": 77,\n\t\"./ar-sa.js\": 77,\n\t\"./ar-tn\": 78,\n\t\"./ar-tn.js\": 78,\n\t\"./ar.js\": 72,\n\t\"./az\": 79,\n\t\"./az.js\": 79,\n\t\"./be\": 80,\n\t\"./be.js\": 80,\n\t\"./bg\": 81,\n\t\"./bg.js\": 81,\n\t\"./bm\": 82,\n\t\"./bm.js\": 82,\n\t\"./bn\": 83,\n\t\"./bn.js\": 83,\n\t\"./bo\": 84,\n\t\"./bo.js\": 84,\n\t\"./br\": 85,\n\t\"./br.js\": 85,\n\t\"./bs\": 86,\n\t\"./bs.js\": 86,\n\t\"./ca\": 87,\n\t\"./ca.js\": 87,\n\t\"./cs\": 88,\n\t\"./cs.js\": 88,\n\t\"./cv\": 89,\n\t\"./cv.js\": 89,\n\t\"./cy\": 90,\n\t\"./cy.js\": 90,\n\t\"./da\": 91,\n\t\"./da.js\": 91,\n\t\"./de\": 92,\n\t\"./de-at\": 93,\n\t\"./de-at.js\": 93,\n\t\"./de-ch\": 94,\n\t\"./de-ch.js\": 94,\n\t\"./de.js\": 92,\n\t\"./dv\": 95,\n\t\"./dv.js\": 95,\n\t\"./el\": 96,\n\t\"./el.js\": 96,\n\t\"./en-au\": 97,\n\t\"./en-au.js\": 97,\n\t\"./en-ca\": 98,\n\t\"./en-ca.js\": 98,\n\t\"./en-gb\": 99,\n\t\"./en-gb.js\": 99,\n\t\"./en-ie\": 100,\n\t\"./en-ie.js\": 100,\n\t\"./en-il\": 101,\n\t\"./en-il.js\": 101,\n\t\"./en-in\": 102,\n\t\"./en-in.js\": 102,\n\t\"./en-nz\": 103,\n\t\"./en-nz.js\": 103,\n\t\"./en-sg\": 104,\n\t\"./en-sg.js\": 104,\n\t\"./eo\": 105,\n\t\"./eo.js\": 105,\n\t\"./es\": 106,\n\t\"./es-do\": 107,\n\t\"./es-do.js\": 107,\n\t\"./es-us\": 108,\n\t\"./es-us.js\": 108,\n\t\"./es.js\": 106,\n\t\"./et\": 109,\n\t\"./et.js\": 109,\n\t\"./eu\": 110,\n\t\"./eu.js\": 110,\n\t\"./fa\": 111,\n\t\"./fa.js\": 111,\n\t\"./fi\": 112,\n\t\"./fi.js\": 112,\n\t\"./fil\": 113,\n\t\"./fil.js\": 113,\n\t\"./fo\": 114,\n\t\"./fo.js\": 114,\n\t\"./fr\": 115,\n\t\"./fr-ca\": 116,\n\t\"./fr-ca.js\": 116,\n\t\"./fr-ch\": 117,\n\t\"./fr-ch.js\": 117,\n\t\"./fr.js\": 115,\n\t\"./fy\": 118,\n\t\"./fy.js\": 118,\n\t\"./ga\": 119,\n\t\"./ga.js\": 119,\n\t\"./gd\": 120,\n\t\"./gd.js\": 120,\n\t\"./gl\": 121,\n\t\"./gl.js\": 121,\n\t\"./gom-deva\": 122,\n\t\"./gom-deva.js\": 122,\n\t\"./gom-latn\": 123,\n\t\"./gom-latn.js\": 123,\n\t\"./gu\": 124,\n\t\"./gu.js\": 124,\n\t\"./he\": 125,\n\t\"./he.js\": 125,\n\t\"./hi\": 126,\n\t\"./hi.js\": 126,\n\t\"./hr\": 127,\n\t\"./hr.js\": 127,\n\t\"./hu\": 128,\n\t\"./hu.js\": 128,\n\t\"./hy-am\": 129,\n\t\"./hy-am.js\": 129,\n\t\"./id\": 130,\n\t\"./id.js\": 130,\n\t\"./is\": 131,\n\t\"./is.js\": 131,\n\t\"./it\": 132,\n\t\"./it-ch\": 133,\n\t\"./it-ch.js\": 133,\n\t\"./it.js\": 132,\n\t\"./ja\": 134,\n\t\"./ja.js\": 134,\n\t\"./jv\": 135,\n\t\"./jv.js\": 135,\n\t\"./ka\": 136,\n\t\"./ka.js\": 136,\n\t\"./kk\": 137,\n\t\"./kk.js\": 137,\n\t\"./km\": 138,\n\t\"./km.js\": 138,\n\t\"./kn\": 139,\n\t\"./kn.js\": 139,\n\t\"./ko\": 140,\n\t\"./ko.js\": 140,\n\t\"./ku\": 141,\n\t\"./ku.js\": 141,\n\t\"./ky\": 142,\n\t\"./ky.js\": 142,\n\t\"./lb\": 143,\n\t\"./lb.js\": 143,\n\t\"./lo\": 144,\n\t\"./lo.js\": 144,\n\t\"./lt\": 145,\n\t\"./lt.js\": 145,\n\t\"./lv\": 146,\n\t\"./lv.js\": 146,\n\t\"./me\": 147,\n\t\"./me.js\": 147,\n\t\"./mi\": 148,\n\t\"./mi.js\": 148,\n\t\"./mk\": 149,\n\t\"./mk.js\": 149,\n\t\"./ml\": 150,\n\t\"./ml.js\": 150,\n\t\"./mn\": 151,\n\t\"./mn.js\": 151,\n\t\"./mr\": 152,\n\t\"./mr.js\": 152,\n\t\"./ms\": 153,\n\t\"./ms-my\": 154,\n\t\"./ms-my.js\": 154,\n\t\"./ms.js\": 153,\n\t\"./mt\": 155,\n\t\"./mt.js\": 155,\n\t\"./my\": 156,\n\t\"./my.js\": 156,\n\t\"./nb\": 157,\n\t\"./nb.js\": 157,\n\t\"./ne\": 158,\n\t\"./ne.js\": 158,\n\t\"./nl\": 159,\n\t\"./nl-be\": 160,\n\t\"./nl-be.js\": 160,\n\t\"./nl.js\": 159,\n\t\"./nn\": 161,\n\t\"./nn.js\": 161,\n\t\"./oc-lnc\": 162,\n\t\"./oc-lnc.js\": 162,\n\t\"./pa-in\": 163,\n\t\"./pa-in.js\": 163,\n\t\"./pl\": 164,\n\t\"./pl.js\": 164,\n\t\"./pt\": 165,\n\t\"./pt-br\": 166,\n\t\"./pt-br.js\": 166,\n\t\"./pt.js\": 165,\n\t\"./ro\": 167,\n\t\"./ro.js\": 167,\n\t\"./ru\": 168,\n\t\"./ru.js\": 168,\n\t\"./sd\": 169,\n\t\"./sd.js\": 169,\n\t\"./se\": 170,\n\t\"./se.js\": 170,\n\t\"./si\": 171,\n\t\"./si.js\": 171,\n\t\"./sk\": 172,\n\t\"./sk.js\": 172,\n\t\"./sl\": 173,\n\t\"./sl.js\": 173,\n\t\"./sq\": 174,\n\t\"./sq.js\": 174,\n\t\"./sr\": 175,\n\t\"./sr-cyrl\": 176,\n\t\"./sr-cyrl.js\": 176,\n\t\"./sr.js\": 175,\n\t\"./ss\": 177,\n\t\"./ss.js\": 177,\n\t\"./sv\": 178,\n\t\"./sv.js\": 178,\n\t\"./sw\": 179,\n\t\"./sw.js\": 179,\n\t\"./ta\": 180,\n\t\"./ta.js\": 180,\n\t\"./te\": 181,\n\t\"./te.js\": 181,\n\t\"./tet\": 182,\n\t\"./tet.js\": 182,\n\t\"./tg\": 183,\n\t\"./tg.js\": 183,\n\t\"./th\": 184,\n\t\"./th.js\": 184,\n\t\"./tk\": 185,\n\t\"./tk.js\": 185,\n\t\"./tl-ph\": 186,\n\t\"./tl-ph.js\": 186,\n\t\"./tlh\": 187,\n\t\"./tlh.js\": 187,\n\t\"./tr\": 188,\n\t\"./tr.js\": 188,\n\t\"./tzl\": 189,\n\t\"./tzl.js\": 189,\n\t\"./tzm\": 190,\n\t\"./tzm-latn\": 191,\n\t\"./tzm-latn.js\": 191,\n\t\"./tzm.js\": 190,\n\t\"./ug-cn\": 192,\n\t\"./ug-cn.js\": 192,\n\t\"./uk\": 193,\n\t\"./uk.js\": 193,\n\t\"./ur\": 194,\n\t\"./ur.js\": 194,\n\t\"./uz\": 195,\n\t\"./uz-latn\": 196,\n\t\"./uz-latn.js\": 196,\n\t\"./uz.js\": 195,\n\t\"./vi\": 197,\n\t\"./vi.js\": 197,\n\t\"./x-pseudo\": 198,\n\t\"./x-pseudo.js\": 198,\n\t\"./yo\": 199,\n\t\"./yo.js\": 199,\n\t\"./zh-cn\": 200,\n\t\"./zh-cn.js\": 200,\n\t\"./zh-hk\": 201,\n\t\"./zh-hk.js\": 201,\n\t\"./zh-mo\": 202,\n\t\"./zh-mo.js\": 202,\n\t\"./zh-tw\": 203,\n\t\"./zh-tw.js\": 203\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 256;","export function hasTouch() {\r\n return 'ontouchstart' in window;\r\n}\r\n\r\nexport function isMobile() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);\r\n}\r\n","/* eslint class-methods-use-this: [\"error\", { \"exceptMethods\": [\"getContent\"] }] */\r\nimport { EventEmitter } from 'events';\r\nimport { tmpl } from '@/utils/util-extent';\r\n\r\nconst { $, google } = window;\r\n\r\nexport default class LocationMap extends EventEmitter {\r\n constructor(dom, list, opt) {\r\n super();\r\n this.list = list;\r\n this.listDict = {};\r\n this.markerDict = {};\r\n this.infoWindow = new google.maps.InfoWindow();\r\n this.defOpt = {\r\n center: { lat: 23.69781, lng: 120.96051499999999 },\r\n zoom: 7,\r\n };\r\n this.opt = $.extend({\r\n center: this.defOpt.center,\r\n zoom: this.defOpt.zoom,\r\n mapTypeControl: false,\r\n zoomControl: false,\r\n streetViewControl: false,\r\n }, opt);\r\n\r\n this.map = new google.maps.Map(dom, this.opt);\r\n this.addMarkers();\r\n }\r\n\r\n addMarkers() {\r\n const self = this;\r\n const icon = LocationMap.getIcon();\r\n let item; let marker;\r\n\r\n this.markerDict = {};\r\n this.listDict = {};\r\n\r\n for (let index = 0; index < this.list.length; index += 1) {\r\n item = this.list[index];\r\n marker = new google.maps.Marker({\r\n position: {\r\n lat: item.lat,\r\n lng: item.lng,\r\n },\r\n map: this.map,\r\n icon,\r\n visible: false,\r\n });\r\n marker.addListener('click', (function click(key) {\r\n return () => {\r\n self.onMarkerClick(key);\r\n };\r\n }(item.key)));\r\n\r\n this.listDict[item.key] = item;\r\n this.markerDict[item.key] = marker;\r\n }\r\n }\r\n\r\n updateNewMarkers(list) {\r\n this.infoWindow.close();\r\n let marker;\r\n Object.keys(this.markerDict).forEach((key) => {\r\n marker = this.markerDict[key];\r\n marker.setVisible(false);\r\n });\r\n this.list = list;\r\n this.addMarkers();\r\n }\r\n\r\n onMarkerClick(key) {\r\n this.showInfoWindow(key);\r\n this.emit(LocationMap.MARKER_CLICK, key);\r\n }\r\n\r\n // 地圖顯示marker內容\r\n getContent(data) {\r\n const $item = $(tmpl($('#template-map-info').html(), data));\r\n if (data.chargerCount === '' || !data.chargerCount) $item.find('.charger-count').remove();\r\n if (data.pricing === '' || !data.pricing) $item.find('.pricing').remove();\r\n if (data.payment === '' || !data.payment) $item.find('.payment').remove();\r\n if (data.tel === '' || !data.tel) $item.find('.tel').remove();\r\n if (!data.aed) $item.find('.aed').remove();\r\n if (!data.exclusive) $item.find('.exclusive').remove();\r\n return $item[0];\r\n }\r\n\r\n showInfoWindow(key) {\r\n const data = this.listDict[key];\r\n const content = this.getContent(data);\r\n $(content).find('.direction-btn').attr('href', this.getDirectionLink(data.lat, data.lng));\r\n this.infoWindow.setContent($(content)[0]);\r\n this.infoWindow.open(this.map, this.markerDict[key]);\r\n }\r\n\r\n updateVisibleMarkers(list) {\r\n this.infoWindow.close();\r\n const bounds = new google.maps.LatLngBounds();\r\n\r\n let item; const listDict = {};\r\n for (let index = 0; index < list.length; index += 1) {\r\n item = list[index];\r\n listDict[item.key] = item;\r\n }\r\n\r\n let marker; let isMatch = false;\r\n let markerVisibleCount = 0;\r\n let lastMatchKey;\r\n Object.keys(this.markerDict).forEach((key) => {\r\n marker = this.markerDict[key];\r\n if (listDict[key]) {\r\n isMatch = true;\r\n markerVisibleCount += 1;\r\n lastMatchKey = key;\r\n marker.setVisible(true);\r\n bounds.extend(marker.getPosition());\r\n } else {\r\n marker.setVisible(false);\r\n }\r\n });\r\n\r\n if (isMatch) {\r\n if (markerVisibleCount > 1) {\r\n this.map.fitBounds(bounds);\r\n } else {\r\n this.panByMarkerKey(lastMatchKey);\r\n }\r\n } else {\r\n this.map.setOptions(this.defOpt);\r\n }\r\n }\r\n\r\n panByMarkerKey(key) {\r\n // console.log(this._map.getZoom());\r\n const item = this.listDict[key];\r\n this.map.panTo({\r\n lat: item.lat,\r\n lng: item.lng,\r\n });\r\n const maxZoom = 16;\r\n // if (this._map.getZoom() < maxZoom)\r\n this.map.setZoom(maxZoom);\r\n this.showInfoWindow(key);\r\n }\r\n\r\n static getIcon() {\r\n return {\r\n url: LocationMap.ICON_URL,\r\n scaledSize: new google.maps.Size(61, 48),\r\n };\r\n }\r\n\r\n static getLink(lat, lng) {\r\n const linkQ = '{LAT},{LNG}/'.replace(/{LNG}/g, lng).replace(/{LAT}/g, lat);\r\n const link = `https://www.google.com.tw/maps/place/${linkQ}`;\r\n return link;\r\n }\r\n\r\n static getLinkByAddr(addr) {\r\n const link = `https://www.google.com.tw/maps/place/${addr}`;\r\n return link;\r\n }\r\n\r\n static getDistance(lat1, lon1, lat2, lon2) {\r\n const deg2rad = Math.PI / 180;\r\n const R = 6371; // Radius of the earth in km\r\n const dLat = deg2rad * (lat2 - lat1); // deg2rad below\r\n const dLon = deg2rad * (lon2 - lon1);\r\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2)\r\n + Math.cos(deg2rad * lat1) * Math.cos(deg2rad * lat2)\r\n * Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n const d = R * c; // Distance in km\r\n return d;\r\n }\r\n\r\n getDirectionLink(tolat, tolng) {\r\n if (this.currentPosition != null) {\r\n return `https://www.google.com/maps/dir/${this.currentPosition.lat},${this.currentPosition.lng}/${tolat},${tolng}`;\r\n }\r\n return '';\r\n }\r\n}\r\n\r\nLocationMap.MARKER_CLICK = 'LocationMap.MarkerClick';\r\nLocationMap.ICON_URL = '/images/icons/location-pin.png';\r\n","import { EventEmitter } from 'events';\r\nimport { tmpl } from '@/utils/util-extent';\r\n\r\nconst { $ } = window;\r\n\r\nexport default class LocationListItem extends EventEmitter {\r\n constructor($container, data, opt) {\r\n super();\r\n this.data = data;\r\n this.map = null;\r\n this.opt = $.extend({\r\n isCheckable: false, // 是否開啟check選項 for 預約\r\n }, opt);\r\n\r\n this.weekday = new Array(7);\r\n this.initWeekName();\r\n\r\n // 資訊內容 一般查詢 以及 選擇預約 template-map-item\r\n this.$item = $(tmpl($('#template-map-item').html(), this.data));\r\n if (this.opt.isCheckable === false) {\r\n // localtion\r\n // 建置每天的營業時間\r\n this.$item.find('.store-info-item ul').empty().append(this.layoutWeekhtml());\r\n // 顯示目前時間間距 呈現營業中或休息中\r\n this.$item.find('.store-info-item .status').empty().append(this.getNowTimeStatus());\r\n this.$item.find('.store-info-item .current-open').empty().append(this.getNowTimeString());\r\n // 判斷顯示項目\r\n this.markerItemshtml();\r\n // 專屬車輛\r\n if (this.data.exclusiveCars.length > 0 && this.data.dateInfo.TYP === 'S') {\r\n this.$item.find('.store-marks').append(`
  • ${this.data.exclusiveCars.join('、')}
  • `);\r\n }\r\n if (!this.data.dist) this.$item.find('.store-distance').remove();\r\n } else {\r\n // 一般預約&預約保養\r\n // reservation預約保養\r\n if (this.opt.isViewMarkerItems) {\r\n this.markerItemshtml();\r\n }\r\n $(this.$item.find('input')).on('click', (e) => {\r\n $(e).prop('checked', true);\r\n this.emit(LocationListItem.CHECK, this.data);\r\n });\r\n }\r\n\r\n\r\n // 綁定事件\r\n $(this.$item.find('.store-content')).on('click', this.onInfoClick.bind(this));\r\n // $(this.$item.find('.item-map-bar .icon')).on('click', this.toggleMapImg.bind(this));\r\n\r\n // this.$map = $(this.$item.find('.item-map'));\r\n $container.append(this.$item);\r\n }\r\n\r\n onInfoClick() {\r\n this.active();\r\n this.emit(LocationListItem.CLICK, this.data.key);\r\n }\r\n\r\n active() {\r\n $('.store-list .store-item').removeClass('active');\r\n this.$item.addClass('active');\r\n }\r\n\r\n initWeekName() {\r\n this.weekday[0] = '星期日';\r\n this.weekday[1] = '星期一';\r\n this.weekday[2] = '星期二';\r\n this.weekday[3] = '星期三';\r\n this.weekday[4] = '星期四';\r\n this.weekday[5] = '星期五';\r\n this.weekday[6] = '星期六';\r\n\r\n // this.weekday[d.getDay()];\r\n }\r\n\r\n getWeekName(offsetDay = 0) {\r\n const timeNow = new Date();\r\n timeNow.setDate(timeNow.getDate() + offsetDay);\r\n return this.weekday[timeNow.getDay()];\r\n }\r\n\r\n getNowTimeStatus(offsetDay = 0) {\r\n const timeNow = new Date();\r\n timeNow.setDate(timeNow.getDate() + offsetDay);\r\n const shiftIndex = timeNow.getDay() - 1;\r\n const isSunDay = timeNow.getDay() === 0;\r\n const { dateInfo } = this.data;\r\n\r\n if (isSunDay) {\r\n if (dateInfo.SDISFLAG === 'Y') {\r\n return LocationListItem.checkTimeStatue(dateInfo.SDTIME);\r\n }\r\n return '公休。';\r\n }\r\n if (dateInfo.Wflags[shiftIndex] === 'Y') {\r\n return LocationListItem.checkTimeStatue(dateInfo.ODTIME);\r\n }\r\n return LocationListItem.checkTimeStatue(this.data.time);\r\n }\r\n\r\n // 預設值為0 時會進入 getNextTimeString\r\n // getNextTimeString 如果遇到計算其他天營業時間會導回getNowTimeString\r\n getNowTimeString(offsetDay = 0) {\r\n const timeNow = new Date();\r\n timeNow.setDate(timeNow.getDate() + offsetDay);\r\n const day = timeNow.getDay();\r\n const shiftIndex = day - 1;\r\n const isSunDay = day === 0;\r\n const { dateInfo } = this.data;\r\n const isGetOtherDay = offsetDay !== 0;\r\n\r\n if (isSunDay) {\r\n if (dateInfo.SDISFLAG === 'Y') {\r\n if (isGetOtherDay) {\r\n return dateInfo.SDTIME;\r\n }\r\n return this.getNextTimeString(dateInfo.SDTIME);\r\n }\r\n return '';\r\n }\r\n if (dateInfo.Wflags[shiftIndex] === 'Y') {\r\n if (isGetOtherDay) {\r\n return dateInfo.ODTIME;\r\n }\r\n return this.getNextTimeString(dateInfo.ODTIME);\r\n }\r\n\r\n\r\n if (isGetOtherDay) {\r\n return this.data.time;\r\n }\r\n return this.getNextTimeString(this.data.time);\r\n }\r\n\r\n getNextTimeString(timeSpan) {\r\n const timeNow = new Date();\r\n const timeSplit = timeSpan.split('~');\r\n if (timeSplit.length !== 2) return '';\r\n const start = parseInt(timeSplit[0].replace(':', ''), 10);\r\n const stop = parseInt(timeSplit[1].replace(':', ''), 10);\r\n const now = timeNow.getHours() * 100 + timeNow.getMinutes();\r\n if (now >= start && now <= stop) {\r\n return timeSpan;\r\n }\r\n if (now < start) {\r\n return `${timeSplit[0]} 營業`;\r\n }\r\n let weekName;\r\n let timeString;\r\n for (let index = 1; index < 7; index += 1) {\r\n if (this.getNowTimeStatus(index) !== '公休') {\r\n timeString = this.getNowTimeString(index);\r\n weekName = this.getWeekName(index);\r\n break;\r\n }\r\n }\r\n return `${weekName} ${timeString.split('~')[0]} 營業`;\r\n }\r\n\r\n static checkTimeStatue(timeSpan) {\r\n const timeNow = new Date();\r\n const timeSplit = timeSpan.split('~');\r\n if (timeSplit.length !== 2) return '公休。';\r\n const start = parseInt(timeSplit[0].replace(':', ''), 10);\r\n const stop = parseInt(timeSplit[1].replace(':', ''), 10);\r\n const now = timeNow.getHours() * 100 + timeNow.getMinutes();\r\n if (now >= start && now <= stop) {\r\n return '營業中。';\r\n }\r\n return '休息中。';\r\n }\r\n\r\n layoutWeekhtml() {\r\n let weekName;\r\n let timeString;\r\n // const weekTime = `
  • {{ weekName }} {{ timeString }}
  • `;\r\n let weekhtml = '';\r\n const sundayIndex = 0;\r\n\r\n this.data.dateInfo.Wflags.forEach((e, i) => {\r\n const index = i + 1;\r\n if (e === 'Y') {\r\n weekName = this.weekday[index];\r\n timeString = this.data.dateInfo.ODTIME;\r\n } else {\r\n weekName = this.weekday[index];\r\n timeString = '公休';\r\n }\r\n weekhtml += LocationListItem.weekHtmlTemplate(weekName, timeString);\r\n });\r\n if (this.data.dateInfo.SDISFLAG === 'Y') {\r\n weekName = this.weekday[sundayIndex];\r\n timeString = this.data.dateInfo.SDTIME;\r\n } else {\r\n weekName = this.weekday[sundayIndex];\r\n timeString = '公休';\r\n }\r\n weekhtml += LocationListItem.weekHtmlTemplate(weekName, timeString);\r\n if (this.data.dateInfo.HDISFLAG === 'Y') {\r\n weekName = '國定假日';\r\n timeString = this.data.dateInfo.HDTIME;\r\n weekhtml += LocationListItem.weekHtmlTemplate(weekName, timeString);\r\n }\r\n\r\n return weekhtml;\r\n }\r\n\r\n static weekHtmlTemplate(weekName, timeString) {\r\n return `
  • ${weekName} ${timeString}
  • `;\r\n }\r\n\r\n markerItemshtml() {\r\n // 判斷顯示項目\r\n if (this.data.ebisflag && this.data.dateInfo.TYP === 'F') this.$item.find('.store-marks').append('
  • ');\r\n if (this.data.ntisflag && this.data.dateInfo.TYP === 'F') this.$item.find('.store-marks').append('
  • ');\r\n if (this.data.aed) this.$item.find('.store-marks').append('
  • ');\r\n if (this.data.exclusive && this.data.dateInfo.TYP === 'F') this.$item.find('.store-marks').append('
  • ');\r\n if (this.data.bpisflag && this.data.dateInfo.TYP === 'F') this.$item.find('.store-marks').append('
  • ');\r\n if (this.data.carHeightType === '1' && this.data.dateInfo.TYP === 'F') {\r\n this.$item.find('.store-marks').append(`
  • 服務廠限高${this.data.limitHeight}cm
  • `);\r\n }\r\n }\r\n}\r\nLocationListItem.CLICK = 'LocationListItem.Click';\r\nLocationListItem.CHECK = 'LocationListItem.Check';\r\n","/* eslint class-methods-use-this: [\"error\", { \"exceptMethods\": [\"adjData\",\"sendMaxnervaLog\",\"dynamicSort\",\"makeCityOption\",\"resetCityOption\"] }] */\r\nimport { EventEmitter } from 'events';\r\nimport { tmpl, verityInput, getSpecialTip } from '@/utils/util-extent';\r\nimport LocationMap from './LocationMap';\r\nimport LocationListItem from './LocationListItem';\r\n\r\nconst { $ } = window;\r\n\r\nconst RANGE = 1000;// km 設定無限大\r\n\r\nexport default class LocationViewer extends EventEmitter {\r\n /**\r\n * Creates an instance of LocationViewer.\r\n *\r\n * @param {any} type: \"1\":展示中心, \"2\":維修據點, \"3\": 充電站\r\n * @param {any} $container\r\n *\r\n * @memberOf LocationViewer\r\n */\r\n constructor(type, $container, opt) {\r\n super();\r\n const self = this;\r\n this.opt = $.extend({\r\n useGPS: true,\r\n isScrollListByMarker: false,\r\n isListItemCheckable: false,\r\n iconUrl: '/images/icons/location-pin.png',\r\n showMap: true,\r\n isMaxnervaLog: false,\r\n }, opt);\r\n\r\n this.locationType = type;\r\n this.$container = $container;\r\n // dynamicdom\r\n // this.$tabCity = this.$container.find('.filter-panel .tabs .tab[data-tab-id=\"city\"]');\r\n // this.$tabKeyword = this.$container.find('.filter-panel .tabs .tab[data-tab-id=\"keyword\"]');\r\n // this.$tabPosition = this.$container.find('.filter-panel .tabs .tab[data-tab-id=\"position\"]');\r\n this.$city = this.$container.find('.location-search .search-filter-city select'); // 縣市下拉選單\r\n this.$area = this.$container.find('.location-search .search-filter-cityarea select'); // 鄉鎮下拉選單\r\n // this.$store = this.$container.find('.filters .store'); //\r\n this.$keyword = this.$container.find('.location-search .search-filters-input input'); // 關鍵字 地址 查詢\r\n this.$listW = this.$container.find('.location-maps-wrapper'); // 控制右邊訊息視窗開關\r\n this.$scrollInfoDom = this.$container.find('.store-list'); // 控制右邊訊息視窗scroll\r\n this.$listContent = this.$container.find('.store-list'); // 預備建置訊息視窗內容\r\n this.list = []; // 取得從 api 傳回資料\r\n this.listShowed = false; // 判斷是否開啟右邊詳細訊息視窗\r\n this.currentList = []; // 存放過濾搜尋條件的資料\r\n this.updateMapDelayer = null;\r\n this.currentFilter = 'city'; // 過濾搜尋條件類型 city keyword 其他為所在位置\r\n // this.currentPostion = null;\r\n this.items = []; // 存放 LocationListItem\r\n this.checkedItemData = null; // 取得選取回傳\r\n this.summary = this.$container.find('.search-result-summary'); // 搜尋結果\r\n this.backProp = null;\r\n this.islinkDirect = false;\r\n LocationMap.ICON_URL = this.opt.iconUrl;\r\n\r\n // this.$container.find('.list .title').html($('#template-location-viewer-list-title').html()); // dynamicdom\r\n\r\n $('.results-toggler').on('click', () => {\r\n if (self.$listW.hasClass('hide-list')) {\r\n self.openList(false);\r\n } else {\r\n self.openList(true);\r\n }\r\n });\r\n\r\n $('#getGeoLocation').on('click', () => {\r\n this.currentFilter = 'position';\r\n this.updateMap();\r\n this.openList();\r\n });\r\n\r\n if (!this.opt.showMap) this.openList(true);\r\n\r\n if (this.opt.list !== undefined) {\r\n this.onLoadList(this.opt.list);\r\n } else {\r\n this.loadList();\r\n }\r\n\r\n this.summary.hide();\r\n this.summary.find('.link-icon-append').on('click', (e) => {\r\n e.preventDefault();\r\n let directType;\r\n if (this.locationType === '1') {\r\n directType = '2';\r\n } else if (this.locationType === '2') {\r\n directType = '1';\r\n }\r\n // 紀錄目前使用參數\r\n this.backProp = { city: this.$city.val(), area: this.$area.val(), keyword: this.$keyword.val() };\r\n this.islinkDirect = true;\r\n $(`input[name=locationType][value=${directType}]`).trigger('click');\r\n });\r\n }\r\n\r\n // 排除特定縣市 by MarkVann → 傳入要排除的縣市名稱列表\r\n excludeCities(list) {\r\n const { listBackup: backup } = this;\r\n if (!backup) {\r\n setTimeout(this.excludeCities.bind(this), 250, list);\r\n return;\r\n }\r\n const list2 = backup.filter(({ city }) => (list.indexOf(city) < 0));\r\n this.updateFilter(list2);\r\n }\r\n\r\n // 只留特定據點 by MarkVann → 傳入要保留的據點KEY列表\r\n targetStores(list) {\r\n const { listBackup: backup } = this;\r\n if (!backup) {\r\n setTimeout(this.targetStores.bind(this), 250, list);\r\n return;\r\n }\r\n const list2 = backup.filter(({ key }) => (list.indexOf(key) > -1));\r\n this.updateFilter(list2);\r\n }\r\n\r\n makeCityOption(list) {\r\n const option = {};\r\n let item;\r\n for (let index = 0; index < list.length; index += 1) {\r\n item = list[index];\r\n if (!option[item.city]) option[item.city] = [];\r\n if (option[item.city].indexOf(item.area) === -1) option[item.city].push(item.area);\r\n }\r\n return option;\r\n }\r\n\r\n resetCityOption(option) {\r\n const { $city: city, $area: area } = this;\r\n city.empty();\r\n area.empty();\r\n city.append('');\r\n area.append('');\r\n Object.keys(option).forEach((key) => {\r\n city.append(\r\n tmpl('', { CITY: key }), // dynamicdom\r\n );\r\n });\r\n }\r\n\r\n updateFilter(list) {\r\n if (!this.listBackup) return;\r\n let newList;\r\n if (!list) {\r\n newList = this.listBackup;\r\n } else {\r\n newList = list;\r\n }\r\n const option = this.makeCityOption(newList);\r\n this.resetCityOption(option);\r\n this.cityOption = option;\r\n this.list = newList;\r\n this.currentList = [];\r\n this.map.updateNewMarkers(newList);\r\n this.openList(false);\r\n this.$listContent.empty();\r\n this.$listW.addClass('hide-list');\r\n this.$keyword.val('');\r\n this.currentPosition = null;\r\n this.summary.hide();\r\n if (this.opt.useGPS) {\r\n this.getCurrentPosition();\r\n }\r\n if (this.islinkDirect) {\r\n if (this.currentFilter === 'city') {\r\n this.$city.val(this.backProp.city);\r\n this.onCityChange();\r\n } else {\r\n this.$keyword.val(this.backProp.keyword);\r\n this.updateMap();\r\n }\r\n }\r\n }\r\n\r\n loadList(isInit = true) {\r\n // var list = require(\"./LocationData.js\");\r\n $.ajax({\r\n url: 'api/location.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n TYPE: this.locationType,\r\n },\r\n })\r\n .done((e) => {\r\n if (e.RS === 'OK') {\r\n if (isInit) {\r\n this.onLoadList(this.adjData(e.DATA));\r\n } else {\r\n this.updateFilter(this.adjData(e.DATA));\r\n }\r\n } else {\r\n console.log(e.RS);\r\n }\r\n })\r\n .fail((e) => {\r\n console.log('error', e);\r\n })\r\n .always(() => {\r\n // console.log('complete');\r\n });\r\n // this.onLoadList(list);\r\n }\r\n\r\n onLoadList(list) {\r\n this.list = list.slice(0);\r\n if (this.opt.showMap) {\r\n this.initMap();\r\n }\r\n this.initCityFilter();\r\n\r\n if (this.opt.useGPS) {\r\n this.getCurrentPosition();\r\n }\r\n this.ready();\r\n }\r\n\r\n adjData(list) {\r\n const newList = [];\r\n let item; let lat; let lng;\r\n for (let key = 0; key < list.length; key += 1) {\r\n item = list[key];\r\n lat = parseFloat(item.LAT);\r\n lng = parseFloat(item.LNG);\r\n if (!Number.isNaN(lat) && !Number.isNaN(lng) && lat !== 0 && lng !== 0) {\r\n newList.push({\r\n lat,\r\n lng,\r\n key: item.KEY,\r\n title: `${item.DEALER}豐田 ${item.TITLE}`,\r\n dealer: item.DEALER,\r\n type: item.TYPE,\r\n city: item.CITY,\r\n area: item.AREA,\r\n address: item.ADDR,\r\n tel: item.TEL,\r\n time: item.TIME,\r\n aed: (item.AED === '1'),\r\n exclusive: (item.EXCLUSIVE === 'Y'),\r\n ebisflag: (item.EBISFLAG === 'Y'),\r\n ntisflag: (item.NTISFLAG === 'Y'),\r\n bpisflag: (item.BPISFLAG === 'Y'),\r\n dateInfo: item.DATEINFO,\r\n exclusiveCars: item.EXCLUSIVECARS, // 展示及維護\r\n carHeightType: item.CARHEIGHTTYPE, // 限高樣式\r\n limitHeight: item.LIMITHEIGHT, // 限高\r\n });\r\n }\r\n }\r\n\r\n return newList;\r\n }\r\n\r\n initMap() {\r\n const $map = this.$container.find('#maps');// dynamicdom\r\n $map.empty();\r\n this.map = new LocationMap($map[0], this.list);\r\n this.map.on(LocationMap.MARKER_CLICK, this.onMarkerClick.bind(this));\r\n }\r\n\r\n initCityFilter() {\r\n const cityOption = {};\r\n let item;\r\n this.$city.append('');\r\n for (let key = 0; key < this.list.length; key += 1) {\r\n item = this.list[key];\r\n if (!cityOption[item.city]) {\r\n cityOption[item.city] = [];\r\n this.$city.append(tmpl('', {\r\n CITY: item.city,\r\n }));\r\n }\r\n if (cityOption[item.city].indexOf(item.area) === -1) {\r\n cityOption[item.city].push(item.area);\r\n }\r\n }\r\n this.$area.html('').prop('disabled', true);\r\n this.$city.on('change', this.onCityChange.bind(this));\r\n this.$area.on('change', this.onAreaChange.bind(this));\r\n // if (this.$store[0]) {\r\n // this.$store.on('change', this.onStoreSelChange.bind(this));\r\n // }\r\n\r\n this.cityOption = cityOption;\r\n this.listBackup = this.list.concat();\r\n }\r\n\r\n onCityChange() {\r\n this.$area.html(''); // dynamicdom\r\n if (this.$city.val() !== '') {\r\n const areas = this.cityOption[this.$city.val()];\r\n for (let i = 0; i < areas.length; i += 1) {\r\n this.$area.append(tmpl('', {\r\n AREA: areas[i],\r\n }));\r\n }\r\n if (this.islinkDirect) {\r\n if (areas.indexOf(this.backProp.area) > -1) {\r\n this.$area.val(this.backProp.area);\r\n } else {\r\n this.$area.append(tmpl('', {\r\n AREA: this.backProp.area,\r\n }));\r\n }\r\n }\r\n }\r\n this.$area.prop('disabled', false);\r\n this.onAreaChange();\r\n }\r\n\r\n onAreaChange() {\r\n this.$keyword.val('');\r\n this.currentFilter = 'city';// this.$tabCity.trigger('click');\r\n this.updateMap();\r\n this.openList();\r\n }\r\n\r\n // onStoreSelChange() {\r\n // if (!this.$store[0]) return;\r\n\r\n // const store = this.$store.val();\r\n // let item;\r\n // for (let key = 0; key < this.list.length; key += 1) {\r\n // item = this.items[key];\r\n // item.check(item.data.key === store, true);\r\n // }\r\n // if (store !== '') {\r\n // this.scrollListByKey(store);\r\n // }\r\n // }\r\n\r\n onKeywordSubmit(e) {\r\n e.preventDefault();\r\n if (this.$keyword.val().length < 1 || verityInput(this.$keyword.val(), 'htmltag') === false) {\r\n alert(getSpecialTip());\r\n return false;\r\n }\r\n this.$city.val('');\r\n this.$area.val('');\r\n this.$city[0].selectedIndex = 0;\r\n this.$area[0].selectedIndex = 0;\r\n $('.location-search .search-filter-city #select2--container').text('請選擇');\r\n $('.location-search .search-filter-cityarea #select2--container').text('請選擇區域');\r\n\r\n this.currentFilter = 'keyword';// this.$tabKeyword.trigger('click');\r\n this.updateMap();\r\n this.openList();\r\n return false;\r\n }\r\n\r\n getCurrentPosition(cb) {\r\n // if (window.location.href.indexOf('toyota') !== -1) {\r\n if ('geolocation' in navigator) {\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n this.onGetCurrentPosition(position, cb);\r\n }, (e) => {\r\n console.log('geolocation error:');\r\n for (let i = 0; i < e.length; i += 1) {\r\n console.log(i, ':', e[i]);\r\n }\r\n });\r\n }\r\n // } else {\r\n // this.onGetCurrentPosition({\r\n // coords: {\r\n // latitude: 25.038341,\r\n // longitude: 121.080813,\r\n // },\r\n // }, cb);\r\n // }\r\n /*\r\n if (\"geolocation\" in navigator) {\r\n navigator.geolocation.getCurrentPosition(function(position) {\r\n this.onGetCurrentPosition(position, cb);\r\n }.bind(this));\r\n }\r\n */\r\n }\r\n\r\n onGetCurrentPosition(position, cb) {\r\n this.currentPosition = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n this.map.currentPosition = this.currentPosition;\r\n\r\n if (this.list) {\r\n let item;\r\n for (let key = 0; key < this.list.length; key += 1) {\r\n item = this.list[key];\r\n item.dist = Math.round(LocationMap.getDistance(\r\n item.lat,\r\n item.lng,\r\n this.currentPosition.lat,\r\n this.currentPosition.lng,\r\n ));\r\n item.directionLink = this.map.getDirectionLink(item.lat, item.lng);\r\n }\r\n }\r\n\r\n if (cb !== undefined) cb();\r\n }\r\n\r\n updateMap() {\r\n if (this.updateMapDelayer) clearTimeout(this.updateMapDelayer);\r\n this.updateMapDelayer = setTimeout(this.updateMapDelay.bind(this), 100);\r\n }\r\n\r\n updateMapDelay() {\r\n let item;\r\n const q = { type: this.locationType };\r\n if (this.currentFilter === 'city') {\r\n if (this.$city.val().length > 0) {\r\n q.city = this.$city.val();\r\n }\r\n if (this.$area.val().length > 0) {\r\n q.area = this.$area.val();\r\n }\r\n if (q.city || q.area) this.sendMaxnervaLog(q.city, q.area, undefined);\r\n } else if (this.currentFilter === 'keyword') {\r\n const keyword = this.$keyword.val();\r\n if (keyword.length > 0) {\r\n q.keyword = keyword;\r\n this.sendMaxnervaLog(undefined, undefined, q.keyword);\r\n }\r\n }\r\n\r\n this.currentList = [];\r\n\r\n if (this.currentFilter === 'city') {\r\n for (let key = 0; key < this.list.length; key += 1) {\r\n item = this.list[key];\r\n this.isMatch = false;\r\n if (item.type === q.type || q.type === '0') {\r\n if (!q.city && !q.area) {\r\n this.isMatch = true;\r\n } else if (!q.area) {\r\n if (item.city === q.city) this.isMatch = true;\r\n } else if (item.city === q.city && item.area === q.area) this.isMatch = true;\r\n\r\n if (this.isMatch) {\r\n this.currentList.push(item);\r\n }\r\n }\r\n }\r\n } else if (this.currentFilter === 'keyword') {\r\n for (let key = 0; key < this.list.length; key += 1) {\r\n item = this.list[key];\r\n this.isMatch = false;\r\n if (q.keyword !== undefined && (item.type === q.type || q.type === '0')) {\r\n if (item.title.indexOf(q.keyword) !== -1 || item.address.indexOf(q.keyword) !== -1) {\r\n this.isMatch = true;\r\n }\r\n }\r\n if (this.isMatch) this.currentList.push(item);\r\n }\r\n } else if (this.CurrentPosition) {\r\n const list = [];\r\n for (let key = 0; key < this.list.length; key += 1) {\r\n item = this.list[key];\r\n // console.log(item.type, q.type, RANGE, item.dist, item.dist < RANGE);\r\n if ((item.dist < RANGE) && (item.type === q.type || q.type === '0')) {\r\n list.push(item);\r\n }\r\n }\r\n if (list.length > 0) {\r\n list.sort(this.dynamicSort('dist'));\r\n }\r\n this.currentList = list.slice(0, 3);\r\n }\r\n\r\n this.islinkDirect = false; // reset\r\n this.updateMapMarkers();\r\n this.updateList();\r\n this.updateSummary();\r\n }\r\n\r\n updateMapMarkers() {\r\n if (this.map) this.map.updateVisibleMarkers(this.currentList);\r\n }\r\n\r\n updateList() {\r\n this.$listContent.empty().scrollTop(0);\r\n\r\n // var html = $(\"#template-map-item\").html();\r\n this.checkedItemData = null;\r\n this.items = [];\r\n let item;\r\n for (let key = 0; key < this.currentList.length; key += 1) {\r\n const data = this.currentList[key];\r\n item = new LocationListItem(this.$listContent, data, {\r\n isCheckable: this.opt.isListItemCheckable,\r\n isViewMarkerItems: this.opt.isViewMarkerItems,\r\n });\r\n item.on(LocationListItem.CLICK, this.onListItemClick.bind(this));\r\n item.on(LocationListItem.CHECK, this.onListItemCheck.bind(this));\r\n this.items.push(item);\r\n }\r\n // this.updateStoreSel();\r\n if (this.currentList.length > 0) this.$listW.removeClass('hide-list');\r\n }\r\n\r\n updateSummary() {\r\n let currentTypeName;\r\n let optiontypeName;\r\n if (this.locationType === '1') {\r\n currentTypeName = '展示中心';\r\n optiontypeName = '維修據點';\r\n } else if (this.locationType === '2') {\r\n currentTypeName = '維修據點';\r\n optiontypeName = '展示中心';\r\n }\r\n this.summary.show();\r\n this.summary.find('.text-primary').text(this.currentList.length);\r\n this.summary.find('.search-type').text(currentTypeName);\r\n this.summary.find('.link-icon-append').empty();\r\n this.summary.find('.link-icon-append').append(`${optiontypeName}`);\r\n }\r\n // updateStoreSel() {\r\n // if (!this.$store[0]) return;\r\n\r\n // this.$store.html('');// dynamicdom\r\n // let item;\r\n // for (let key = 0; key < this.currentList.length; key += 1) {\r\n // item = this.currentList[key];\r\n // // this.$store.append(''.replace(/{AREA}/g, areas[i]));\r\n // this.$store.append(tmpl('', {\r\n // KEY: item.key,\r\n // TITLE: item.title,\r\n // }));\r\n // }\r\n // }\r\n\r\n onListItemClick(key) {\r\n if (this.map) this.map.panByMarkerKey(key);\r\n }\r\n\r\n onListItemCheck(data) {\r\n // const key = data ? data.key : '';\r\n // let item;\r\n // for (let i = 0; i < this.items.length; i += 1) {\r\n // item = this.items[i];\r\n // // console.log(item.data.key, key);\r\n // if (item.data.key !== key) {\r\n // item.$item.removeClass('CHECKED');\r\n // }\r\n // }\r\n // if (this.$store[0]) this.$store.val(key);\r\n this.checkedItemData = data;\r\n this.emit(LocationViewer.LIST_ITEM_CHECK, data);\r\n }\r\n\r\n onMarkerClick(key) {\r\n if (!this.listShowed) this.openList();\r\n if (this.opt.isScrollListByMarker) {\r\n this.scrollListByKey(key);\r\n }\r\n }\r\n\r\n scrollListByKey(key) {\r\n let $item;\r\n for (let i = 0; i < this.items.length; i += 1) {\r\n const item = this.items[i];\r\n if (item.data.key === key) {\r\n $item = item.$item;\r\n item.active();\r\n }\r\n }\r\n if ($item) {\r\n const top = $item.offset().top - this.$scrollInfoDom.offset().top + this.$scrollInfoDom.scrollTop();\r\n this.$scrollInfoDom.animate({\r\n scrollTop: top,\r\n }, 500);\r\n }\r\n }\r\n\r\n openList(open) {\r\n let isOpen;\r\n if (open === undefined) {\r\n isOpen = true;\r\n } else {\r\n isOpen = open;\r\n }\r\n if (isOpen) {\r\n this.$listW.addClass('hide-list');\r\n this.listShowed = true;\r\n } else {\r\n this.$listW.removeClass('hide-list');\r\n }\r\n }\r\n\r\n ready() {\r\n // this.filterTabs = new TabGroup(\r\n // this.$container.find('.filter-panel .tabs .tab'),\r\n // this.$container.find('.filter-panel .filters .filter')\r\n // );\r\n\r\n // dynamicdom\r\n this.currentFilter = 'city'; // this.$tabCity.trigger('click');\r\n this.$container.find('.location-search .search-filters-input button').on('click', this.onKeywordSubmit.bind(this));\r\n\r\n // this.filterTabs.on('TabGroup.Change', this.onFilterTabsChange.bind(this));\r\n\r\n if (this.opt.exclusive) {\r\n this.updateMapDelay();\r\n this.openList(true);\r\n }\r\n }\r\n\r\n // onFilterTabsChange(id) {\r\n // this.currentFilter = id;\r\n // switch (id) {\r\n // case 'position':\r\n // this.getCurrentPosition(this.updateMap.bind(this));\r\n // break;\r\n // default:\r\n // this.updateMap();\r\n // break;\r\n // }\r\n // }\r\n\r\n sendMaxnervaLog(city, area, keyword) {\r\n const data = {};\r\n if (city) data.CITY = city;\r\n if (area) data.AREA = area;\r\n if (keyword) data.KEYWORD = keyword;\r\n $.ajax({\r\n url: 'api/location_log.ashx',\r\n type: 'POST',\r\n dataType: 'json',\r\n cache: 'false',\r\n data,\r\n });\r\n }\r\n\r\n dynamicSort(argProperty) {\r\n let sortOrder = 1;\r\n let property = argProperty;\r\n if (property[0] === '-') {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function sort(a, b) {\r\n let result;// = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;\r\n if ((a[property] < b[property])) {\r\n result = -1;\r\n } else if ((a[property] > b[property])) {\r\n result = 1;\r\n } else {\r\n result = 0;\r\n }\r\n return result * sortOrder;\r\n };\r\n }\r\n\r\n get CheckedItemData() {\r\n return this.checkedItemData;\r\n }\r\n\r\n get CurrentPosition() {\r\n if (!this.currentPosition || this.currentPosition == null) {\r\n this.getCurrentPosition(this.updateMap.bind(this));\r\n }\r\n return this.currentPosition;\r\n }\r\n}\r\nLocationViewer.LIST_ITEM_CHECK = 'LocationViewer.ListItemCheck';\r\n"],"sourceRoot":""}