// 這個 BaRaBaRa 是以 jQuery 當作基礎的,所以記得 在此之前務必 引入 jQuery. // // we need something like sprintf // (function(window) { var re = { not_string: /[^s]/, number: /[def]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[\+\-]/ } function sprintf() { var key = arguments[0], cache = sprintf.cache if (!(cache[key] && cache.hasOwnProperty(key))) { cache[key] = sprintf.parse(key) } return sprintf.format.call(null, cache[key], arguments) } sprintf.format = function(parse_tree, argv) { var cursor = 1, tree_length = parse_tree.length, node_type = "", arg, output = [], i, k, match, pad, pad_character, pad_length, is_positive = true, sign = "" for (i = 0; i < tree_length; i++) { node_type = get_type(parse_tree[i]) if (node_type === "string") { output[output.length] = parse_tree[i] } else if (node_type === "array") { match = parse_tree[i] // convenience purposes only if (match[2]) { // keyword argument arg = argv[cursor] for (k = 0; k < match[2].length; k++) { if (!arg.hasOwnProperty(match[2][k])) { throw new Error(sprintf("[sprintf] property '%s' does not exist", match[2][k])) } arg = arg[match[2][k]] } } else if (match[1]) { // positional argument (explicit) arg = argv[match[1]] } else { // positional argument (implicit) arg = argv[cursor++] } if (get_type(arg) == "function") { arg = arg() } if (re.not_string.test(match[8]) && (get_type(arg) != "number" && isNaN(arg))) { throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg))) } if (re.number.test(match[8])) { is_positive = arg >= 0 } switch (match[8]) { case "b": arg = arg.toString(2) break case "c": arg = String.fromCharCode(arg) break case "d": arg = parseInt(arg, 10) break case "e": arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential() break case "f": arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg) break case "o": arg = arg.toString(8) break case "s": arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg) break case "u": arg = arg >>> 0 break case "x": arg = arg.toString(16) break case "X": arg = arg.toString(16).toUpperCase() break } if (!is_positive || (re.number.test(match[8]) && match[3])) { sign = is_positive ? "+" : "-" arg = arg.toString().replace(re.sign, "") } pad_character = match[4] ? match[4] == "0" ? "0" : match[4].charAt(1) : " " pad_length = match[6] - (sign + arg).length pad = match[6] ? str_repeat(pad_character, pad_length) : "" output[output.length] = match[5] ? sign + arg + pad : (pad_character == 0 ? sign + pad + arg : pad + sign + arg) } } return output.join("") } sprintf.cache = {} sprintf.parse = function(fmt) { var _fmt = fmt, match = [], parse_tree = [], arg_names = 0 while (_fmt) { if ((match = re.text.exec(_fmt)) !== null) { parse_tree[parse_tree.length] = match[0] } else if ((match = re.modulo.exec(_fmt)) !== null) { parse_tree[parse_tree.length] = "%" } else if ((match = re.placeholder.exec(_fmt)) !== null) { if (match[2]) { arg_names |= 1 var field_list = [], replacement_field = match[2], field_match = [] if ((field_match = re.key.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { if ((field_match = re.key_access.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] } else if ((field_match = re.index_access.exec(replacement_field)) !== null) { field_list[field_list.length] = field_match[1] } else { throw new SyntaxError("[sprintf] failed to parse named argument key") } } } else { throw new SyntaxError("[sprintf] failed to parse named argument key") } match[2] = field_list } else { arg_names |= 2 } if (arg_names === 3) { throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported") } parse_tree[parse_tree.length] = match } else { throw new SyntaxError("[sprintf] unexpected placeholder") } _fmt = _fmt.substring(match[0].length) } return parse_tree } var vsprintf = function(fmt, argv, _argv) { _argv = (argv || []).slice(0) _argv.splice(0, 0, fmt) return sprintf.apply(null, _argv) } /** * helpers */ function get_type(variable) { return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase() } function str_repeat(input, multiplier) { return Array(multiplier + 1).join(input) } /** * export to either browser or node.js */ if (typeof exports !== "undefined") { exports.sprintf = sprintf exports.vsprintf = vsprintf } else { window.sprintf = sprintf window.vsprintf = vsprintf if (typeof define === "function" && define.amd) { define(function() { return { sprintf: sprintf, vsprintf: vsprintf } }) } } })(typeof window === "undefined" ? this : window) // // somthing attached to jQuery // jQuery.fn.outerHTML = function() { return jQuery('
').append(this.eq(0).clone()).html(); }; jQuery.fn.disabled = function(status) { jQuery(this).each(function(){ jQuery(this)[0].disabled=status; }) return; }; jQuery.fn.tagName = function() { return this.prop("tagName"); }; var _wx_datsrc = {}; jQuery.fn.valByDatSrc = function(){ jQuery(this).find("[wx-datsrc]").each(function(){ var out2html = ($(this).prop("tagName").toLowerCase()=="div" || $(this).prop("tagName").toLowerCase()=="span" || $(this).prop("tagName").toLowerCase()=="td" || $(this).prop("tagName").toLowerCase()=="a"); if (out2html){ jQuery(this).attr("wx-value",jQuery(this).html()); }else{ jQuery(this).attr("wx-value",jQuery(this).val()); } if (jQuery(this).attr("wx-display")!=null){ //$.clog(jQuery(this).attr("wx-display")) var tmp = jQuery(this).attr("wx-display").split(','); var out = Array(); var match = jQuery(this).attr("wx-match"); //$.clog(match) if (match==null) match = "sn"; for(var i=0; i"+errHint+"", "noCaption":"了解", "noAction":function(){ window.location.href=_wx_docroot; } }); } function _defNotice(code,text){ switch(code){ case 400: var msg = ""; switch(text){ case "Info Required Not Specified": msg = "進行查閱所需的資料缺乏,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; default: mag = "無法到達您所需要的服務。"; break; } _popWin({ "title":"缺乏關鍵資料!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 401: var msg = ""; switch(text){ default: msg = "未標示/授權的資訊或地點,你可能處於無法使用此服務的網路,或者你必須要標示你所處的位置。"; break; } _popWin({ "title":"未標示/授權定位!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 403: var msg = ""; switch(text){ default: msg = "您目前的登入身份/網路位置,無法提供你欲前往的服務權限。"; break; } _popWin({ "title":"沒有服務的權限!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 404: var msg = ""; switch(text){ default: msg = "找不到相關資料或者服務。"; break; } _popWin({ "title":"沒有相應的資訊!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 405: var msg = ""; switch(text){ default: msg = "您抵達服務的方式並不正常,以致無法進入該服務,請依 系統介面 的操作執行相關功能。"; break; } _popWin({ "title":"不支援的輸入方式!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 422: var msg = ""; switch(text){ case "Unprocessable Entity - Fail": msg = "進行資料驗證無法通過查核,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; case "Unprocessable Entity - Empty": msg = "進行資料驗證時發現空值,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; default: msg = "輸入資料驗證發生了問題,建議您 Ctrl+F5 重新整理後再嘗試操作。"; break; } _popWin({ "title":"發生資料驗證問題!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 500: var msg = ""; switch(text){ case "Server Internal Error - Database": msg = "無法連線資料庫,這可能是一個短時間內無法排除除的問題,建議您稍後再嘗試連結。"; break; default: msg = "目前伺服主機無法提供正常的服務,這可能是一個短時間內無法排除除的問題,建議您稍後再嘗試連結。"; break; } _popWin({ "title":"發生伺服器上的問題!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break case 501: var msg = ""; switch(text){ default: msg = "嘗試要執行的功能,尚未開始提供服務,請選取介面上標示為可進行的操作。"; break; } _popWin({ "title":"尚未提供的服務!", "content":msg+"
"+code+":"+text+"", "noCaption":"回到主畫面", "noAction":function(){ window.location.href=_wx_docroot; } }); break } } // 清除輸入欄位數值 function _cleanField(target){ target.find(" input[type='checkbox']").prop("checked", false); target.find(" [wx-default]").each(function(){ switch($(this).tagName().toLocaleLowerCase()){ case "div": $(this).html($(this).attr("wx-default")); break; default: if ($(this).attr("type")=="checkbox"){ if ($.isNothing($(this).attr("wx-default")) && $(this).attr("wx-default")!="1" && $(this).attr("wx-default")!="true" && $(this).attr("wx-default")!="Yes" && $(this).attr("wx-default")!="On"){ $(this).prop("checked", false); }else{ $(this).prop("checked", true); } }else{ $(this).val($(this).attr("wx-default")); $(this).attr("wx-value",$(this).attr("wx-default")); } break; } }); } function _initFields(role){ if (role==null) role=""; $(role+"[wx-field]").each(function(){ if ($(this).attr("type")=="checkbox") return true; var theVal = ""; if ($.isNothing($(this).val())==false){ theVal = $(this).val() } if ($.isNothing($(this).wx("default"))==true){ $(this).wx("default",theVal); $(this).xval(theVal); } if ($.isNothing($(this).wx("value"))==true){ $(this).wx("value",theVal); $(this).xval(theVal); } if ($.isNothing($(this).wx("orival"))==true){ $(this).wx("orival",theVal); $(this).xval(theVal); } }); $(role+"[wx-role='rdoItem']").on("click",function(){ $("["+$(this).wx("for").replace(/\$/,"wx-")+"][wx-field='"+$(this).wx("field")+"']").val($(this).val()); }); $("[wx-type='number']").each(function(){ var tsVal = $("[wx-type='number']").val(); if ($.isNothing(tsVal)) tsVal = 0; tsVal = tsVal*1; if (tsVal<0) tsVal = 0; $(this).xval(tsVal); }); $("[wx-type='number']").on("change",function(){ $("[wx-type='number']").val(_rtnNumQty($("[wx-type='number']").val())); }); } function _rtnNumQty(tsVal){ if ($.isNothing(tsVal)) tsVal = 0; tsVal = tsVal*1; if (tsVal<0) tsVal = 0; return(tsVal); } function _autoPager(ctnRole,shrBtn,tRecs,view,action){ if (view.pagenum==view.pagecount){ $(ctnRole).addClass("hide"); $(shrBtn).wx("cond",""); }else{ $(ctnRole).removeClass("hide"); var pageNext = view.pagenum * 1 + 1; var pageNextFrom = ( pageNext - 1 ) * view.pagesize * 1 + 1; var pageNextTo = ( pageNext ) * view.pagesize; var pageTotalRecs = tRecs; if (pageNextTo>=pageTotalRecs){ pageNextTo = pageTotalRecs; } $(ctnRole+" [wx-role='btnReadMore']").removeClass("hide"); $(ctnRole+" [wx-role='btnReadMore']").wx("page",pageNext); $(ctnRole+" [wx-role='btnReadMore']").unbind("click"); if ($.isFunction(action)){ $(ctnRole+" [wx-role='btnReadMore']").on("click",action); }else{ $(ctnRole+" [wx-role='btnReadMore']").on("click",function(){ $(shrBtn).wx("page",$(this).wx("page")); $(shrBtn).trigger("click"); }); } $(ctnRole+" [wx-role='hintRowNextFrom']").html(pageNextFrom); $(ctnRole+" [wx-role='hintRowNextTo']").html(pageNextTo); $(ctnRole+" [wx-role='hintRowTotal']").html(pageTotalRecs); } }/** * jQuery TWzipcode plugin * https://code.essoduke.org/twzipcode/ * Copyright 2017 essoduke.org, Licensed MIT. * * Changelog * ------------------------------- * 新增 html5 [data-*] 新增為元素屬性的功能。 * * @author essoduke.org * @version 1.7.13 * @license MIT License */ ;(function ($, window, document, undefined) { 'use strict'; // Zipcode JSON data var data = { '基隆市': {'仁愛區': '200', '信義區': '201', '中正區': '202', '中山區': '203', '安樂區': '204', '暖暖區': '205', '七堵區': '206'}, '臺北市': {'中正區': '100', '大同區': '103', '中山區': '104', '松山區': '105', '大安區': '106', '萬華區': '108', '信義區': '110', '士林區': '111', '北投區': '112', '內湖區': '114', '南港區': '115', '文山區': '116'}, '新北市': { '萬里區': '207', '金山區': '208', '板橋區': '220', '汐止區': '221', '深坑區': '222', '石碇區': '223', '瑞芳區': '224', '平溪區': '226', '雙溪區': '227', '貢寮區': '228', '新店區': '231', '坪林區': '232', '烏來區': '233', '永和區': '234', '中和區': '235', '土城區': '236', '三峽區': '237', '樹林區': '238', '鶯歌區': '239', '三重區': '241', '新莊區': '242', '泰山區': '243', '林口區': '244', '蘆洲區': '247', '五股區': '248', '八里區': '249', '淡水區': '251', '三芝區': '252', '石門區': '253' }, '宜蘭縣': { '宜蘭市': '260', '頭城鎮': '261', '礁溪鄉': '262', '壯圍鄉': '263', '員山鄉': '264', '羅東鎮': '265', '三星鄉': '266', '大同鄉': '267', '五結鄉': '268', '冬山鄉': '269', '蘇澳鎮': '270', '南澳鄉': '272', '釣魚臺列嶼': '290' }, '新竹市': {'東區': '300', '北區': '300', '香山區': '300'}, '新竹縣': { '竹北市': '302', '湖口鄉': '303', '新豐鄉': '304', '新埔鎮': '305', '關西鎮': '306', '芎林鄉': '307', '寶山鄉': '308', '竹東鎮': '310', '五峰鄉': '311', '橫山鄉': '312', '尖石鄉': '313', '北埔鄉': '314', '峨嵋鄉': '315' }, '桃園市': { '中壢區': '320', '平鎮區': '324', '龍潭區': '325', '楊梅區': '326', '新屋區': '327', '觀音區': '328', '桃園區': '330', '龜山區': '333', '八德區': '334', '大溪區': '335', '復興區': '336', '大園區': '337', '蘆竹區': '338' }, '苗栗縣': { '竹南鎮': '350', '頭份市': '351', '三灣鄉': '352', '南庄鄉': '353', '獅潭鄉': '354', '後龍鎮': '356', '通霄鎮': '357', '苑裡鎮': '358', '苗栗市': '360', '造橋鄉': '361', '頭屋鄉': '362', '公館鄉': '363', '大湖鄉': '364', '泰安鄉': '365', '銅鑼鄉': '366', '三義鄉': '367', '西湖鄉': '368', '卓蘭鎮': '369' }, '臺中市': { '中區': '400', '東區': '401', '南區': '402', '西區': '403', '北區': '404', '北屯區': '406', '西屯區': '407', '南屯區': '408', '太平區': '411', '大里區': '412', '霧峰區': '413', '烏日區': '414', '豐原區': '420', '后里區': '421', '石岡區': '422', '東勢區': '423', '和平區': '424', '新社區': '426', '潭子區': '427', '大雅區': '428', '神岡區': '429', '大肚區': '432', '沙鹿區': '433', '龍井區': '434', '梧棲區': '435', '清水區': '436', '大甲區': '437', '外埔區': '438', '大安區': '439' }, '彰化縣': { '彰化市': '500', '芬園鄉': '502', '花壇鄉': '503', '秀水鄉': '504', '鹿港鎮': '505', '福興鄉': '506', '線西鄉': '507', '和美鎮': '508', '伸港鄉': '509', '員林市': '510', '社頭鄉': '511', '永靖鄉': '512', '埔心鄉': '513', '溪湖鎮': '514', '大村鄉': '515', '埔鹽鄉': '516', '田中鎮': '520', '北斗鎮': '521', '田尾鄉': '522', '埤頭鄉': '523', '溪州鄉': '524', '竹塘鄉': '525', '二林鎮': '526', '大城鄉': '527', '芳苑鄉': '528', '二水鄉': '530' }, '南投縣': { '南投市': '540', '中寮鄉': '541', '草屯鎮': '542', '國姓鄉': '544', '埔里鎮': '545', '仁愛鄉': '546', '名間鄉': '551', '集集鎮': '552', '水里鄉': '553', '魚池鄉': '555', '信義鄉': '556', '竹山鎮': '557', '鹿谷鄉': '558' }, '嘉義市': {'東區': '600', '西區': '600'}, '嘉義縣': { '番路鄉': '602', '梅山鄉': '603', '竹崎鄉': '604', '阿里山': '605', '中埔鄉': '606', '大埔鄉': '607', '水上鄉': '608', '鹿草鄉': '611', '太保市': '612', '朴子市': '613', '東石鄉': '614', '六腳鄉': '615', '新港鄉': '616', '民雄鄉': '621', '大林鎮': '622', '溪口鄉': '623', '義竹鄉': '624', '布袋鎮': '625' }, '雲林縣': { '斗南鎮': '630', '大埤鄉': '631', '虎尾鎮': '632', '土庫鎮': '633', '褒忠鄉': '634', '東勢鄉': '635', '臺西鄉': '636', '崙背鄉': '637', '麥寮鄉': '638', '斗六市': '640', '林內鄉': '643', '古坑鄉': '646', '莿桐鄉': '647', '西螺鎮': '648', '二崙鄉': '649', '北港鎮': '651', '水林鄉': '652', '口湖鄉': '653', '四湖鄉': '654', '元長鄉': '655' }, '臺南市': { '中西區': '700', '東區': '701', '南區': '702', '北區': '704', '安平區': '708', '安南區': '709', '永康區': '710', '歸仁區': '711', '新化區': '712', '左鎮區': '713', '玉井區': '714', '楠西區': '715', '南化區': '716', '仁德區': '717', '關廟區': '718', '龍崎區': '719', '官田區': '720', '麻豆區': '721', '佳里區': '722', '西港區': '723', '七股區': '724', '將軍區': '725', '學甲區': '726', '北門區': '727', '新營區': '730', '後壁區': '731', '白河區': '732', '東山區': '733', '六甲區': '734', '下營區': '735', '柳營區': '736', '鹽水區': '737', '善化區': '741', '大內區': '742', '山上區': '743', '新市區': '744', '安定區': '745' }, '高雄市': { '新興區': '800', '前金區': '801', '苓雅區': '802', '鹽埕區': '803', '鼓山區': '804', '旗津區': '805', '前鎮區': '806', '三民區': '807', '楠梓區': '811', '小港區': '812', '左營區': '813', '仁武區': '814', '大社區': '815', '東沙群島': '817', '南沙群島': '819', '岡山區': '820', '路竹區': '821', '阿蓮區': '822', '田寮區': '823', '燕巢區': '824', '橋頭區': '825', '梓官區': '826', '彌陀區': '827', '永安區': '828', '湖內區': '829', '鳳山區': '830', '大寮區': '831', '林園區': '832', '鳥松區': '833', '大樹區': '840', '旗山區': '842', '美濃區': '843', '六龜區': '844', '內門區': '845', '杉林區': '846', '甲仙區': '847', '桃源區': '848', '那瑪夏區': '849', '茂林區': '851', '茄萣區': '852' }, '屏東縣': { '屏東市': '900', '三地門鄉': '901', '霧臺鄉': '902', '瑪家鄉': '903', '九如鄉': '904', '里港鄉': '905', '高樹鄉': '906', '鹽埔鄉': '907', '長治鄉': '908', '麟洛鄉': '909', '竹田鄉': '911', '內埔鄉': '912', '萬丹鄉': '913', '潮州鎮': '920', '泰武鄉': '921', '來義鄉': '922', '萬巒鄉': '923', '崁頂鄉': '924', '新埤鄉': '925', '南州鄉': '926', '林邊鄉': '927', '東港鎮': '928', '琉球鄉': '929', '佳冬鄉': '931', '新園鄉': '932', '枋寮鄉': '940', '枋山鄉': '941', '春日鄉': '942', '獅子鄉': '943', '車城鄉': '944', '牡丹鄉': '945', '恆春鎮': '946', '滿州鄉': '947' }, '臺東縣': { '臺東市': '950', '綠島鄉': '951', '蘭嶼鄉': '952', '延平鄉': '953', '卑南鄉': '954', '鹿野鄉': '955', '關山鎮': '956', '海端鄉': '957', '池上鄉': '958', '東河鄉': '959', '成功鎮': '961', '長濱鄉': '962', '太麻里鄉': '963', '金峰鄉': '964', '大武鄉': '965', '達仁鄉': '966' }, '花蓮縣': { '花蓮市': '970', '新城鄉': '971', '秀林鄉': '972', '吉安鄉': '973', '壽豐鄉': '974', '鳳林鎮': '975', '光復鄉': '976', '豐濱鄉': '977', '瑞穗鄉': '978', '萬榮鄉': '979', '玉里鎮': '981', '卓溪鄉': '982', '富里鄉': '983' }, '金門縣': {'金沙鎮': '890', '金湖鎮': '891', '金寧鄉': '892', '金城鎮': '893', '烈嶼鄉': '894', '烏坵鄉': '896'}, '連江縣': {'南竿鄉': '209', '北竿鄉': '210', '莒光鄉': '211', '東引鄉': '212'}, '澎湖縣': {'馬公市': '880', '西嶼鄉': '881', '望安鄉': '882', '七美鄉': '883', '白沙鄉': '884', '湖西鄉': '885'} }; /** * twzipcode Constructor * @param {Object} container HTML element * @param {(Object|string)} options User settings * @constructor */ function TWzipcode (container, options) { /** * Default settings * @type {Object} */ var defaults = { 'countyName' : 'county', 'css' : [], 'detect' : false, // v1.6.7 'districtName' : 'district', 'googleMapsKey' : '', // v1.6.9 'hideCounty' : [], // v1.7.9 'hideDistrict' : [], // v1.7.9 'onCountySelect' : null, // v1.5 'onDistrictSelect' : null, // v1.5 'onZipcodeKeyUp' : null, // v1.5 'afterZipcodeSetup' : null, // v1.7.13 add by Mxp.TW 'readonly' : false, 'zipcodeName' : 'zipcode', 'zipcodePlaceholder' : '郵遞區號', 'zipcodeIntoDistrict' : false, // v1.6.6 }; /** * DOM of selector * @type {Object} */ this.container = $(container); /** * Merge the options * @type {Object} */ this.options = $.extend({}, defaults, options); // initialize this.init(); } /** * TWzipcode prototype */ TWzipcode.prototype = { VERSION: '1.7.12', /** * Method: Get all post data * @return {Object} */ data: function () { var wrap = this.wrap; return 'undefined' !== typeof data[wrap.county.val()] ? data[wrap.county.val()] : data; }, /** * Method: Serialize the data * @return {string} */ serialize: function () { var result = [], obj = {}, ele = {}, s = {}; obj = this.container.find('select,input'); if (obj.length) { obj.each(function () { ele = $(this); result.push(ele.attr('name') + '=' + ele.val()); }); } else { $(this).children().each(function () { s = $(this); result.push(s.attr('name') + '=' + s.val()); }); } return result.join('&'); }, /** * Method: Destroy the container. * @this {TWzipcode} */ destroy: function () { $.data(this.container.get(0), 'twzipcode', null); if (this.container.length) { return this.container.empty().off('change.twzipcode keyup.twzipcode blur.twzipcode'); } }, /** * Method: Get elements of instance * @param {(string|Array)} opts Type name * @param {Function} callback Function callback */ get: function (callback) { var self = this, result = [], n; function putin (o) { if ('undefined' !== typeof self.wrap[o]) { result.push(self.wrap[o].val()); } } if ('function' === typeof callback) { callback.call(this, this.wrap.county.val(), this.wrap.district.val(), this.wrap.zipcode.val()); } else if ('string' === typeof callback) { callback.split(',').forEach(putin); } else if (Array.isArray(callback)) { callback.forEach(putin); } else { result = this.wrap; } return result; }, /** * Method: Set value for elements. * @param {(string|number|Object)} opts Input value */ set: function (opts) { var self = this, def = { 'county' : '', 'district' : '', 'zipcode' : '' }, opt = $.extend({}, def, opts); try { if ('string' === typeof opts || 'number' === typeof opts) { self.wrap.zipcode.val(opts).trigger('blur.twzipcode'); } else { if (opt.zipcode) { self.wrap.zipcode.val(opt.zipcode).trigger('blur.twzipcode'); } if (opt.county) { self.wrap.county.val(opt.county).trigger('change.twzipcode'); } if (opt.district) { self.wrap.district.val(opt.district).trigger('change.twzipcode'); } } } catch (ignore) { console.warn(ignore.message); } finally { return self.container; } }, /** * Method: Reset the selected items to default. * @this {TWzipcode} */ reset: function (container, obj) { var self = this, wrap = self.wrap, opts = self.options, county = '', list = { 'county': '', 'district': '' }, tpl = []; switch (obj) { case 'district': wrap.district.html(list.district); break; default: wrap.county.html(list.county); wrap.district.html(list.district); for (county in data) { if ('undefined' !== typeof data[county] && -1 === opts.hideCounty.indexOf(county)) { tpl.push(''); } } $(tpl.join('')).appendTo(wrap.county); break; } wrap.zipcode.val(''); }, /** * Binding the event of the elements * @this {TWzipcode} */ bindings: function () { var self = this, opts = self.options, wrap = self.wrap, dz = '', dc = '', dd = ''; // county wrap.county.on('change.twzipcode', function () { var val = $(this).val(), district = '', tpl = []; wrap.district.empty(); if (val) { if (true === opts.zipcodeIntoDistrict) { for (district in data[val]) { if ('undefined' !== typeof data[val][district] && (-1 === opts.hideDistrict.indexOf(district) && -1 === opts.hideDistrict.indexOf(data[val][district])) ) { tpl.push(''); } } } else { for (district in data[val]) { if ('undefined' !== typeof data[val][district] && (-1 === opts.hideDistrict.indexOf(district) && -1 === opts.hideDistrict.indexOf(data[val][district])) ) { tpl.push(''); } } } wrap.district.append(tpl.join('')).trigger('change.twzipcode'); } else { wrap.county.find('option:first').prop('selected', true); self.reset('district'); } // County callback binding if ('function' === typeof opts.onCountySelect) { opts.onCountySelect.call(this); } }); // District wrap.district.on('change.twzipcode', function () { var val = $(this).val(); if (wrap.county.val()) { wrap.zipcode.val(data[wrap.county.val()][val]); } // District callback binding if ('function' === typeof opts.onDistrictSelect) { opts.onDistrictSelect.call(this); } }); // Zipcode wrap.zipcode.on('keyup.twzipcode blur.twzipcode', function () { var obj = $(this), val = '', i = '', j = ''; obj.val(obj.val().replace(/[^0-9]/g, '')); val = obj.val().toString(); if (3 === val.length) { for (i in data) { if ('undefined' !== typeof data[i]) { for (j in data[i]) { if ('undefined' !== typeof data[i][j] && val === data[i][j] ) { wrap.county.val(i).trigger('change.twzipcode'); wrap.district.val(j).trigger('change.twzipcode'); break; } } } } } // Zipcode callback binding if ('function' === typeof opts.onZipcodeKeyUp) { opts.onZipcodeKeyUp.call(this); } }); // Put [data-*] into attributes of element (function () { var zip = self.role.zipcode.data(), county = self.role.county.data(), district = self.role.district.data(), n; for (n in zip) { if ('role' !== n) { self.role.zipcode.find(':input').attr(n, zip[n]); } } for (n in county) { if ('role' !== n) { self.role.county.find('select').attr(n, county[n]); } } for (n in district) { if ('role' !== n) { self.role.district.find('select').attr(n, district[n]); } } }()); dz = 'undefined' !== typeof opts.zipcodeSel ? opts.zipcodeSel : ( 'undefined' !== typeof self.role.zipcode.data('value') ? self.role.zipcode.data('value') : opts.zipcodeSel ); dc = 'undefined' !== typeof opts.countySel ? opts.countySel : ( 'undefined' !== typeof self.role.county.data('value') ? self.role.county.data('value') : opts.countySel ); dd = 'undefined' !== typeof opts.districtSel ? opts.districtSel : ( 'undefined' !== typeof self.role.district.data('value') ? self.role.district.data('value') : opts.districtSel ); // Default value if (dc) { self.wrap.county.val(dc).trigger('change.twzipcode'); if ('undefined' !== typeof data[dc][dd]) { self.wrap.district.val(dd).trigger('change.twzipcode'); } } if (dz && 3 === dz.toString().length) { self.wrap.zipcode.val(dz).trigger('blur.twzipcode'); } }, /** * Geolocation detect * @this {TWzipcode} */ geoLocation: function (callback) { var self = this, geolocation = navigator.geolocation, options = { 'maximumAge': 600000, 'timeout': 3000, 'enableHighAccuracy': false }, opts = self.options; if (!geolocation || !callback) { return; } geolocation.getCurrentPosition( function (loc) { var latlng = {}; if (('coords' in loc) && ('latitude' in loc.coords) && ('longitude' in loc.coords) ) { latlng = [loc.coords.latitude, loc.coords.longitude]; $.getJSON( 'https://maps.googleapis.com/maps/api/geocode/json', { 'key': opts.googleMapsKey, 'sensor': false, 'latlng': latlng.join(',') }, function (data) { var postal = ''; if (data && 'undefined' !== typeof data.results && 'undefined' !== typeof data.results[0].address_components && 'undefined' !== typeof data.results[0].address_components[0] ) { postal = data.results[0] .address_components[data.results[0].address_components.length - 1] .long_name; if (postal) { self.wrap.zipcode.val(postal.toString()).trigger('blur.twzipcode'); } } if ('function' === typeof callback) { callback.call(self, loc); } }); } }, function (error) { console.error(error); }, options ); }, /** * twzipcode Initialize * @this {TWzipcode} */ init: function () { var self = this, container = self.container, opts = self.options, role = { county: container.find('[data-role=county]:first'), district: container.find('[data-role=district]:first'), zipcode: container.find('[data-role=zipcode]:first') }, countyName = role.county.data('name') || opts.countyName, districtName = role.district.data('name') || opts.districtName, zipcodeName = role.zipcode.data('name') || opts.zipcodeName, zipcodePlaceholder = role.zipcode.data('placeholder') || opts.zipcodePlaceholder, readonly = role.zipcode.data('readonly') || opts.readonly; // Elements create $('') .attr('name', countyName) .addClass(role.county.data('style') || ('undefined' !== typeof opts.css[0] ? opts.css[0] : '')) .appendTo(role.county.length ? role.county : container); $('') .attr('name', districtName) .addClass(role.district.data('style') || ('undefined' !== typeof opts.css[1] ? opts.css[1] : '')) .appendTo(role.district.length ? role.district : container); $('') .attr({'type': 'text', 'name': zipcodeName, 'placeholder': zipcodePlaceholder}) .prop('readonly', readonly) .addClass(role.zipcode.data('style') || ('undefined' !== typeof opts.css[2] ? opts.css[2] : '')) .appendTo(role.zipcode.length ? role.zipcode : container); self.wrap = { 'county': container.find('select[name="' + countyName + '"]:first'), 'district': container.find('select[name="' + districtName + '"]:first'), 'zipcode': container.find('input[type=text][name="' + zipcodeName + '"]:first') }; if (true === opts.zipcodeIntoDistrict) { self.wrap.zipcode.hide(); } self.role = role; // Reset the elements self.reset(); // Elements events binding self.bindings(); // Geolocation self.geoLocation(opts.detect); // v.1.7.13 binding afterZipcodeSetup event. if ('function' === typeof opts.afterZipcodeSetup) { opts.afterZipcodeSetup.call(this); } } }; /** * jQuery twzipcode instance * @param {Object} options Plugin settings * @public */ $.fn.twzipcode = function (options) { var instance = {}, result = [], args = arguments, id = 'twzipcode'; if ('string' === typeof options) { this.each(function () { instance = $.data(this, id); if (instance instanceof TWzipcode && 'function' === typeof instance[options]) { result = instance[options].apply(instance, Array.prototype.slice.call(args, 1)); } }); return 'undefined' !== typeof result ? result : this; } else { return this.each(function () { if (!$.data(this, id)) { $.data(this, id, new TWzipcode(this, options)); } }); } }; })(window.jQuery || {}, window, document); //#EOF // 付款方式 _wx_datsrc['payMethod'] = {}; _wx_datsrc.payMethod['0'] = {"pay_method_sn":"0","pay_method_name":"\u4fe1\u7528\u5361"}; _wx_datsrc.payMethod['1'] = {"pay_method_sn":"1","pay_method_name":"Line Pay"}; _wx_datsrc.payMethod['2'] = {"pay_method_sn":"2","pay_method_name":"ATM\u532f\u6b3e"}; // 寄送地區 _wx_datsrc['shippingArea'] = {}; _wx_datsrc.shippingArea['1'] = {"shipping_sn":"1","shiping_area":"\u53f0\u7063\u672c\u5cf6"}; _wx_datsrc.shippingArea['2'] = {"shipping_sn":"2","shiping_area":"\u53f0\u7063\u96e2\u5cf6 (\u91d1\u9580\u3001\u6f8e\u6e56\u3001\u9023\u6c5f)"}; // 訂單狀態 _wx_datsrc['orderStatus'] = {}; _wx_datsrc.orderStatus['0'] = {"od_status_sn":"0","od_status_name":"\u5f85\u4ed8\u6b3e","description":""}; _wx_datsrc.orderStatus['1'] = {"od_status_sn":"1","od_status_name":"\u8655\u7406\u4e2d","description":""}; _wx_datsrc.orderStatus['2'] = {"od_status_sn":"2","od_status_name":"\u5df2\u51fa\u8ca8","description":""}; _wx_datsrc.orderStatus['3'] = {"od_status_sn":"3","od_status_name":"\u5df2\u53d6\u6d88","description":""}; _wx_datsrc.orderStatus['4'] = {"od_status_sn":"4","od_status_name":"\u5df2\u9000\u4ef6","description":""}; _wx_datsrc.orderStatus['5'] = {"od_status_sn":"5","od_status_name":"\u9000\u8ca8\u7533\u8acb\u4e2d","description":""}; _wx_datsrc.orderStatus['6'] = {"od_status_sn":"6","od_status_name":"\u5df2\u9000\u8ca8","description":""}; // 付款狀態 _wx_datsrc['payStatus'] = {}; _wx_datsrc.payStatus['0'] = {"pay_status_sn":"0","pay_staus":"\u7121\u6b3e\u9805","description":"\u521d\u59cb\u72c0\u614b\uff0c\u6216\u6d88\u8cbb\u8005\u5c1a\u672a\u4ed8\u6b3e\u5373\u9000\u8ca8\u5f8c\u986f\u793a\u72c0\u614b"}; _wx_datsrc.payStatus['1'] = {"pay_status_sn":"1","pay_staus":"\u5c1a\u672a\u4ed8\u6b3e","description":"\u6d88\u8cbb\u8005\u6210\u7acb\u8a02\u55ae\u5f8c\u5c1a\u672a\u56de\u5831\u4ed8\u6b3e\u72c0\u614b"}; _wx_datsrc.payStatus['2'] = {"pay_status_sn":"2","pay_staus":"\u5c1a\u672a\u78ba\u8a8d\u6b3e\u9805","description":"\u6210\u7acb\u8a02\u55ae\u5f8c --> \u56de\u5831\u532f\u6b3e\u5f8c\u72c0\u614b\u986f\u793a "}; _wx_datsrc.payStatus['3'] = {"pay_status_sn":"3","pay_staus":"\u5df2\u78ba\u8a8d\u6b3e\u9805","description":"\u5f8c\u53f0\u7ba1\u7406\u4eba\u54e1\u5c0d\u5e33\u5f8c\u986f\u793a\u72c0\u614b\r\n\u7531\u5ba2\u6236\u8f49\u5e33\u5f8c\u56de\u8986\u8cc7\u6599\u4f86\u5c0d\u5e33\uff0c\u5c0d\u5e33\u5b8c\u6210\u5f8c\u6703\u8b8a\u66f4\u70ba\u201c\u5df2\u78ba\u8a8d\u6b3e\u9805\u201d\u3002"}; _wx_datsrc.payStatus['4'] = {"pay_status_sn":"4","pay_staus":"\u5c1a\u672a\u9000\u6b3e","description":"\u6d88\u8cbb\u8005\u8981\u6c42\u9000\u8ca8\u5f8c\uff0c\u5c1a\u672a\u5c07\u6b3e\u9805\u9000\u7d66\u6d88\u8cbb\u8005 Refunded Pending"}; _wx_datsrc.payStatus['5'] = {"pay_status_sn":"5","pay_staus":"\u5df2\u9000\u6b3e","description":"\u6d88\u8cbb\u8005\u8981\u6c42\u9000\u8ca8\u5f8c\uff0c\u6b3e\u9805\u5df2\u7d93\u9000\u7d66\u6d88\u8cbb\u8005Refunded"}; // 商品類別 _wx_datsrc['pdtCategory'] = {}; _wx_datsrc.pdtCategory['1'] = {"pdt_cate_sn":"1","pdt_cate_name":"\u8cbc\u7d19"}; _wx_datsrc.pdtCategory['2'] = {"pdt_cate_sn":"2","pdt_cate_name":"\u8863\u670d"}; _wx_datsrc.pdtCategory['3'] = {"pdt_cate_sn":"3","pdt_cate_name":"\u6d3b\u52d5\u6307\u5b9a\u8d08\u54c1(\u52a0\u8cfc)"}; $(document).ready(function () { // 蒐集可回收利用的物件放置於 _wx_reusable_pool // initEvents(); $.collectReusable(); initEvents(); initEventsProduct(); // initPhotoswipe(); initEventsMessage(); initEventsShoppingCart(); initEventsOrder(); initEventsPayment(); initLayout(); }); /* declare array _wx_datsrc which stand for common data */ function initEvents(){ _fillOptions("#slt_od_payway", _wx_datsrc.payMethod,"pay_method_sn","pay_method_name",2,true); _fillOptions("#slt_od_shipping", _wx_datsrc.shippingArea,"shipping_sn","shiping_area",1,true); } /*________ init modal _________*/ function initLayout(){ /*________ init modal _________ 1. PhotoSwipe 的 z-index 是1500,popup win 要顯示在最上層 */ $("#modal_default").css("z-index","1700"); // popup win $("#modal_cart").css("z-index","1550"); // shopping cart $("#modal_Remittance").css("z-index","1600"); // modal_Remittance 回報匯款視窗 $("modal_comfirm_psw").css("z-index","1600"); // $("button.close").addClass('hide'); var galleryZIndex = $(".pswp").css("z-index"); //1500 var zIndex = $("#modal_default").css('z-index'); //$.clog("galleryZIndex: " + galleryZIndex); //$.clog("zIndex: " + zIndex); $(".pswp__button--arrow--left").click(function(){ initEventsProduct(); }); $(".pswp__button--arrow--right").click(function(){ initEventsProduct(); }); /*________ credit card _ next field ________*/ $("[wx-role='inpCreditCardNum']:input").keyup(function(e){ if($(this).val().length==$(this).attr('maxlength')){ //$.clog($(this).val().length); $(this).closest("div").next("div").find("[wx-role='inpCreditCardNum']:input").focus(); } }); } /*_______________ load products _________________*/ function initEventsProduct(){ var api = _gfApi(); // $.clog(_apiUrl+"def/worxpace/searchProducts"); $.go(_apiUrl+"def/worxpace/searchProducts",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: var date = new Date(); var preOrderCode = ""; //產生 photoswipe 產品圖片等資訊 $("[wx-role='ctrBody'][wx-for='figPdts'] [wx-reusable]").remove(); for(var i in res.data){ var item = res.data[i]; //將spec 做urlencode 避免標點符號影響html,後面reuse會設置給wx-rawdat item["pdt_spec_2"] = encodeURIComponent(res.data[i].pdt_spec_2); item["pdt_off_time_onlydate"] = item["pdt_off_time"].substr(0,10); $("[wx-role='ctrBody'][wx-for='figPdts']").append($.reuse("figPdtItem",item)); if (item["pdt_max"]<0){ $("[wx-role='hintQtySaled'][wx-for='"+item["pdt_sn"]+"']").addClass("hide"); } if (item["pdt_off_time"]=="0000-00-00 00:00:00"){ $("[wx-role='hintExpireDate'][wx-for='"+item["pdt_sn"]+"']").addClass("hide"); } // $.clog(res.data[i].pdt_spec_2); //{"F":"F"}, {"6":"6","8":"8","10":"10","12":"12","S":"S","M":"M","L":"L","XL":"XL","2XL":"2XL","3XL":"3XL","4XL":"4XL","5XL":"5XL","6XL":"6XL"} // $.clog("A__ "+encodeURIComponent(res.data[i].pdt_spec_2)); // $.clog("B__ "+decodeURIComponent(encodeURIComponent(res.data[i].pdt_spec_2))); var decodedSpec = decodeURIComponent(item["pdt_spec_2"]); $.clog(decodedSpec); var spec = {}; spec = JSON.parse(decodedSpec); $.clog(spec); var div = ""; div = $('
"); //LOOP JSON & Append Color Button jQuery.each(spec, function(index, itemData){ $.clog(itemData); $("[wx-role='pSpec2'][wx-for='"+res.data[i].pdt_code+"']").remove(); //spec button 的外層
$("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").remove(); //spec button 的外層
var tag_a = ""; tag_a = $(''+itemData+""); if(itemData =="F"){ $.clog(itemData); tag_a = $(''+itemData+""); //FIXIT clicked 有時會沒有效 $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").wx("spec",itemData); //FIXIT 有時會沒有效 }else if(itemData !="F"){ $.clog("pdt_spec_2: " + itemData); //10707130A } tag_p.append(tag_a); }); tag_p.insertBefore($("a[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']"));//將整個button的
嵌在 加入購物車按鈕前 //已預購 N 件 顯示 preOrderCode = res.data[i].pdt_code; searchPreOrder(preOrderCode); var onTime = new Date(res.data[i].pdt_on_time); var offTime = new Date(res.data[i].pdt_off_time); if( date < onTime){ //$.clog(res.data[i].pdt_code+" onTime: " + onTime + " | offTime:" + offTime); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html(res.data[i].pdt_on_time+ " 開放預購"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active size"); }else if( date >offTime){ //FOCUS TODO //$.clog(res.data[i].pdt_code+" onTime: " + onTime + " | offTime:" + offTime); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html("已截止預購"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active order_expired"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").addClass("not-active size"); }else{ $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").html("加入購物車"); $("[wx-role='addToCart'][wx-for='"+res.data[i].pdt_code+"']").removeClass("not-active"); $("[wx-role='aPdtSpec2'][wx-for='"+res.data[i].pdt_code+"']").removeClass("not-active size"); } }//END of res.data loop break; case 404: _defNotice(res.code,res.response); break; default: _defNotice(res.code,res.response); break; } }); } //get current time function getNow(){ var today = new Date(); var month = today.getMonth()+1; var day = today.getDate(); var output = today.getFullYear() + '-' + (month<10 ? '0' : '') + month + '-' + (day<10 ? '0' : '') + day + " " + today.getHours() +":"+today.getMinutes()+":"+today.getSeconds(); return output; } //display quantities of preordered product function searchPreOrder(pdtCode){ //$.clog("searchPreOrder");//TEST var api = _gfApi(); api.query = {"pdt_code":pdtCode}; $.go(_apiUrl+"def/worxpace/searchPreOrder",api,function(res,st,jx){ // res.code is a number switch(res.code){ case 200: var preOrderSold = 0; if(res.trecs == 0){ $("[wx-role='orderedQty']").html(0); } if(res.trecs>0){ //$.clog("searchPreOrder Found"); //TEST //取得產品的編號,將其設定於購物車按鈕中/或各產品 for(var i in res.data){ //$.clog(res.data[i].pdt_qty);//TEST preOrderSold += parseInt(res.data[i].pdt_qty); $("[wx-role='orderedQty']").html(preOrderSold); } } //$.clog("preOrderSold: " + preOrderSold); break; case 404: _defNotice(res.code,res.response); break; default: _defNotice(res.code,res.response); break; } }); } function initEventsMessage(){ //1. send message //2. send email/phone to customer // wx("for") = attr("wx-for"); $("[wx-role='btnSendMessage']").on("click",function(event){ event.preventDefault(); var field_data = {}; var email = $("[wx-role='inpCustomerEmail']").val(); var customer = $("[wx-role='inpCustomerName']").val(); var content = $("[wx-role='txtCustomerMessage']").val(); if(!isValidEmailAddress(email)){ _popWin({ "title":"Email 格式錯誤", "content":"
您所輸入的Email 格式錯誤,請重新輸入",
"noCaption":"OK"
});
return;
}
if(customer.length < 2){
_popWin({
"title":"姓名不得少於2個字",
"content":"請重新輸入名字",
"noCaption":"OK"
});
return;
}
if(content.length < 10){
_popWin({
"title":"訊息內容不得少於10個字",
"content":"請輸入超過10個字的訊息",
"noCaption":"OK"
});
return;
}
if($.isNothing(customer)===false && $.isNothing(email)===false && $.isNothing(content)===false){
field_data.msg_email = email;
field_data.msg_customer = customer;
field_data.msg_content = content;
field_data.msg_code = "##tabseq##";
field_data.msg_time = getNow();
//$.clog(field_data);//TEST
sendMessage(field_data);
}
}); // btnSendMessage click event
}
function initEventsShoppingCart(){
// viewCart("btnViewCart");
$("[wx-role='inpTotalClothes']").attr("disabled",true); //所有商品數量隱藏欄位
$("body").on("click","[wx-role='aPdtSpec2']",function(){
var target =$(this).wx("for"); // 該產品編號
var size = $(this).wx("default"); //該產品尺寸
$("[wx-role='addToCart'][wx-for='"+target+"']").wx("spec",size);
$("[wx-role='aPdtSpec2'][wx-for='"+target+"']").removeClass("clicked"); //預設沒有 clicked 這個class
$("[wx-role='aPdtSpec2'][wx-for='"+target+"'][wx-default='"+size+"']").addClass("clicked");//選到加上clicked這個class,會改變顏色
});//END of aClothesSize click Event
/* __ count items __ */
countItems();
/* __ addToCart __ */
$("body").on("click","[wx-role='addToCart']",function(){ //pdt 1
var field_data = {};
var pdt_sn = $(this).wx("value");
var pdt_code = $(this).wx("for");
var pdt_spec_2 = $(this).wx("spec");
var pdt_status = parseInt($(this).wx("cond"));
var pdt_category = parseInt($(this).wx("disptype"));
var btnSpec = $("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").attr("default");
if(pdt_category ===2 || pdt_category ===3){ //pdt_status ===2 &&
//$.clog(pdt_code);
if(!$("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").hasClass('clicked')){//[wx-disptype='"+pdt_category+"']
_popWin({
"title":"您尚未選擇尺寸",
"content":"請先點選尺寸",
"noCaption":"OK"
});
return;
}
}
// TODO FIXIT
// 商品類別[1] sticker,
if(pdt_category ===1){ //parseInt(pdt_status) ===1 &&
if(!$("[wx-role='aPdtSpec2'][wx-for='"+pdt_code+"']").hasClass('clicked')){//[wx-disptype='"+pdt_category+"'][wx-for='"+pdt_code+"']
_popWin({
"title":"您尚未選擇顏色",
"content":"請先點選顏色",
"noCaption":"OK"
});
return;
}
}
// var preOrderSize = $("[wx-role='aClothesSize']").wx("default");
//$.clog("addToCart clicked : " + pdt_sn + "/" + pdt_code + "/ " +pdt_spec_2 ); // hard code : sn
field_data.pdt_sn = pdt_sn;
field_data.pdt_code = pdt_code;
field_data.pdt_spec_2 = pdt_spec_2;
field_data.pdt_status = pdt_status;
field_data.pdt_category = pdt_category;
field_data.pdt_qty = 1; //預設數量為1
//$.clog(field_data);
addToCart(field_data);
});//END of addToCart Event
/*__ 圓形購物車圖示 viewCart 檢視購物車 __*/
$("[wx-role='btnViewCart']").on("click",function(){
viewCart("btnViewCart");
//將購物車中所有數量顯示在購物車清單中。
});
/*__ 當購物車中商品數量直接變更時 [ qty ] __*/
$("body").on("change","[wx-role='inpPdtQty']",function(event){
event.preventDefault();
var field_data = {};
var parmeters = {};
var pdtCode = $(this).wx("for");
var pdtSn = $(this).wx("value");
var qty =parseInt($(this).val());
var pdt_spec_2 =$(this).wx("spec");
var pdt_status = parseInt($(this).wx("cond"));
var pdt_category = parseInt($(this).wx("disptype"));
//$.clog("______ [ qty ] ______|| pdtSpec2: "+pdt_spec_2+" qty: "+qty+" pdtCode: "+pdtCode+" pdtSn: "+pdtSn+" pdt_status: "+pdt_status+" pdt_category: "+pdt_category);
field_data.pdt_code = pdtCode;
field_data.pdt_sn = pdtSn;
field_data.pdt_qty = qty;
field_data.pdt_spec_2 = pdt_spec_2;
field_data.pdt_status = pdt_status;
field_data.pdt_category = pdt_category;
// var name = $("[wx-role='spanPdtName'][wx-for='"+pdtCode+"']").html();
if(qty===0 || qty.length===0){
//$.clog(qty);//TEST
removeItemFromCart(field_data);
}else{
updateCart(field_data); // pdt_code & qty
}
});
/*__ 當購物車中商品數量增加時 [ + ] __*/
$("body").on("click","[wx-role='btnPlus']",function(event){
var pdtCode = $(this).wx("for");
var pdtSn = $(this).wx("value");
var spec = $(this).wx("spec");
var category = $(this).wx("disptype");
var status = $(this).wx("cond");
//pdt_code + status + category + spec
var qty =parseInt($("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-spec='"+spec+"']").val());
qty+=1;
//$.clog(qty);//TEST
var field_data = {};
field_data.pdt_code = pdtCode;
field_data.pdt_sn = pdtSn;
field_data.pdt_qty = qty;
field_data.pdt_spec_2 = spec;
field_data.pdt_status = status;
field_data.pdt_category = category;
$("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-spec='"+spec+"']").val(qty);
//$.clog("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-cond='"+status+"'][wx-disptype='"+category+"'][wx-rawdat='"+spec+"']");
updateCart(field_data); // pdt_code & qty
});
/*__ 當購物車中商品數量減少時 [ - ]__*/
$("body").on("click","[wx-role='btnMinus']",function(event){
event.preventDefault();
var pdtCode = $(this).wx("for");
var pdtSn = $(this).wx("value");
var spec = $(this).wx("spec");
var qty =parseInt($("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-spec='"+spec+"']").val());
var pdtSpec2 = $("[wx-role='spanPdtSpec2'][wx-default='"+spec+"'][wx-for='"+pdtCode+"']").wx("value");
var category = $(this).wx("disptype");
var status = $(this).wx("cond");
if(qty===1){
$("[wx-role='btnViewCart']").attr("data-target","#modal_cart");
//_______set modal attributes to button [ - ] to close #modal_cart
//$.clog("remove Item From Cart");//TEST
var field_data = {};
field_data.pdt_code = pdtCode;
field_data.pdt_sn = pdtSn;
field_data.pdt_qty = qty;
field_data.pdt_spec_2 = spec;
field_data.pdt_status = status;
field_data.pdt_category = category;
removeItemFromCart(field_data);
}else{
qty-=1;
//$.clog(qty);//TEST
$("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-spec='"+spec+"']").val(qty);
//$.clog("[wx-role='inpPdtQty'][wx-for='"+pdtCode+"'][wx-default='"+spec+"']");
var field_data = {};
field_data.pdt_code = pdtCode;
field_data.pdt_sn = pdtSn;
field_data.pdt_qty = qty;
field_data.pdt_spec_2 = spec;
field_data.pdt_status = status;
field_data.pdt_category = category;
updateCart(field_data); // pdt_code & qty
}
});
/*__ 選擇寄送地區 變更事件 【 運費(本島) = 80 || (離島) = 100 】__*/
$("[wx-role='sltShippingArea']").on("change",function(){
var shippingArea =parseInt($(this).val());
var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html());
var shippingMethod = parseInt($("[wx-role='sltShippingMethod']").val());
var shippingFee = 80; //預設值 TEST
var totalAmount = 0;
var totalItems = parseInt($("[wx-role='inpTotalClothes']").val()); //所有商品數量隱藏欄位
if(totalItems<5){
if(shippingArea===1){
shippingFee = 80;
}
if(shippingArea===2){// 離島
if(shippingMethod===1){
shippingFee = 80;
}else{
_popWin({
"title":"離島無法超商取貨",
"content":"離島無法超商取貨,請選擇郵寄",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄
viewCart("btnViewCart");
}
});
}
}
}else{
shippingFee = 0;
if(shippingArea===2){// 離島
if(shippingMethod!=1){
_popWin({
"title":"離島無法超商取貨",
"content":"離島無法超商取貨,請選擇郵寄",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄
viewCart("btnViewCart");
}
});
}
}
}
$("[wx-role='spanShippingFee']").html(shippingFee);
totalAmount = parseInt(shippingFee+cartTotal);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
//$.clog("shippingArea: " + shippingArea); //TEST
//$.clog("shippingFee: " + shippingFee+" + cartTotal: " + cartTotal + " = " + totalAmount);//TEST
});
/*__ 選擇付款方式 __*/
$("[wx-role='sltPayMethod']").on("change",function(){
//line pay , credit card, ATM
// if this.val == line pay, popupWin, but don't close this modal of cart.
var payMethod = parseInt($(this).val());
// alert(payMethod);
if(payMethod===0){ // credit card
_popWin({
"title":"不適用信用卡收款",
"content":"ODYSSEY 2018 為愛展翼\n大會師活動不適用 信用卡 收款方式,\n請選擇 ATM 付款。",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltPayMethod'] option[value=2]").prop('selected',true); //FIXED. 回到預設值 : ATM
viewCart("btnViewCart");
}
});
return false;
}
if(payMethod===1){ // line pay
_popWin({
"title":"LINE PAY 尚未建置",
"content":"LINE PAY 付款鏈接建置中",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltPayMethod'] option[value=2]").prop('selected',true); //FIXED. 回到預設值 : ATM
viewCart("btnViewCart");
}
});
return false;
}
});
/*__ 選擇寄送方式 變更事件 【 1: 郵寄, 2:超商取貨 】__*/
$("[wx-role='sltShippingMethod']").on("change",function(){
var shippingArea =parseInt($("[wx-role='sltShippingArea']").val());
var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html());
var shippingMethod = parseInt($(this).val());
var shippingFee = 80;//預設值 TEST
var totalAmount = 0;
var totalItems = parseInt($("[wx-role='inpTotalClothes']").val()); //所有商品數量隱藏欄位
if(totalItems<5){
if(shippingMethod===1){ //郵寄
shippingFee = 80; //TEST
}
if(shippingMethod===2){// 超商取貨
if(shippingArea===1){ //本島
shippingFee = 80;//TEST
}else{//離島
_popWin({
"title":"離島無法超商取貨",
"content":"離島無法超商取貨,請選擇郵寄",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄
viewCart("btnViewCart");
}
});
}
}
}else{
shippingFee =0;
if(shippingArea===2){// 離島
if(shippingMethod!=1){
_popWin({
"title":"離島無法超商取貨",
"content":"離島無法超商取貨,請選擇郵寄",
"yesCaption":"OK",
"yesAction":function(){
$("[wx-role='sltShippingMethod'] option[value=1]").prop('selected',true); //FIXED. 回到預設值 : 郵寄
viewCart("btnViewCart");
}
});
}
}
}
$("[wx-role='spanShippingFee']").html(shippingFee);
totalAmount = parseInt(shippingFee+cartTotal);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
//$.clog("shippingArea: " + shippingArea); //TEST
//$.clog("shippingFee: " + shippingFee+" + cartTotal: " + cartTotal + " = " + totalAmount);//TEST
});
/* _______ 勾選 [ 與最後到貨的商品一起出貨 ] ______
1. class="form-group hide" // 一開始隱藏
2. 一開始為disabled, not checked
*/
$("[wx-role='chkConfirmDelivery']").prop("checked",false);
$("[wx-role='chkConfirmDelivery']").on("change",function(){
if($(this).is(":checked")){
$("[wx-role='btnCheckout']").removeAttr("disabled");
}else{
$("[wx-role='btnCheckout']").attr("disabled",true); //prop("disabled",true);
$.clog("disable a");
}
});
/*__ 結帳按鈕下 viewCart 檢視購物車 __*/
$("[wx-role='btnCheckout']").on("click",function(){
viewCart("btnCheckout"); //將購物車中所有數量顯示在購物車清單中。
});
$("[wx-role='inpCustomerBirth']").on("change",function(){
var psw = $(this).val().split("-");
var combinePsw = psw.join("");
$("[wx-role='inpCustomerPsw']").val(combinePsw);
});
} // END of initEventsShoppingCart
/*_________ [SEARCH] 取得日期區間欄位值 e.g. 消費日期from ~ to 2018-04-05~2018-05-05 ________*/
/*init Payment ___ 建置中 TODO */
function initEventsPayment(){
payByCreditCard();
// usingLinePay();
// ______ 回報匯款的 -> checkbox 選擇ATM ______
$("[wx-role='chkTransferring']").change(function(){
if($(this).is(":checked")){
$("[wx-role='chkDeposit']").prop("checked",false);
$("[wx-role='labAccount']").html("帳號末五碼");
$("[wx-role='inpRemittingAccount5']").removeAttr("placeholder");
$("[wx-role='inpRemittingAccount5']").val("");
}else{
}
});
// ______ 回報匯款 -> checkbox 選擇無摺 ______
$("[wx-role='chkDeposit']").change(function(){
if($(this).is(":checked")){
$("[wx-role='chkTransferring']").prop("checked",false);
$("[wx-role='labAccount']").html("無摺存款單備註");
$("[wx-role='inpRemittingAccount5']").attr("placeholder","請填入存款單上的備註"); //TODO FOCUS 可以修改文字敘述
}else{
$("[wx-role='labAccount']").html("帳號末五碼");
$("[wx-role='inpRemittingAccount5']").removeAttr("placeholder");
$("[wx-role='inpRemittingAccount5']").val("");
}
});
// ______ 回報匯款 -> 回報匯款按鈕
// $("[wx-role='btnRemittance']").click(function(){
$("body").on("click","[wx-role='btnRemittance']",function(){
//設置訂單編號給回報匯款表單按鈕
$("[wx-role='sendRemittanceInfo']").wx("for",$(this).wx("for"));
});
// ______ 回報匯款 -> 確認回傳按鈕
$("body").on("click","[wx-role='sendRemittanceInfo']",function(){
//$.clog("[A] click");
var odCode = $(this).wx("for");
checkRemittanceInfoExisted(odCode);
});
// ______ 回報匯款 -> 確認回傳按鈕 keypress
$("body").on("keypress","[wx-role='sendRemittanceInfo']",function(event){
event.preventDefault();
//$.clog("[A] keypress");
var odCode = $(this).wx("for");
checkRemittanceInfoExisted(odCode);
});
}
function checkRemittanceInfoExisted(odCode){
var field_data={};
// var memo = remittingAccount.split("");
// memo = memo[0]+memo[1];
// $.clog(memo);
// _____ ATM匯款 _____
if($("[wx-role='chkTransferring']").is(":checked")){
var remittingDate = $("[wx-role='inpRemittingDate']").val();
var remittingAccount = $("[wx-role='inpRemittingAccount5']").val();
if(remittingAccount.length===0){
_popWin({
"title":"匯款帳號欄位空白",
"content":"請填您的匯款帳號後五碼",
"yesCaption":"OK"
});
return;
}else if(remittingAccount.length!=5){
_popWin({
"title":"匯款帳號錯誤",
"content":"請填您的匯款帳號後五碼",
"yesCaption":"OK"
});
return;
}else if(remittingDate.length<8){
_popWin({
"title":"匯款日期錯誤",
"content":"請填您的匯款日期",
"yesCaption":"OK"
});
}else{
field_data.od_paid_date = remittingDate;
field_data.debit_account = remittingAccount;
}
}
// _____ 無摺存款 _____
if($("[wx-role='chkDeposit']").is(":checked")){
var remittingDate = $("[wx-role='inpRemittingDate']").val();
var remittingAccount = $("[wx-role='inpRemittingAccount5']").val();
if(remittingAccount.length===0){
_popWin({
"title":"無摺存款單備註欄位空白",
"content":"請填您的無摺存款單的備註欄內容",
"yesCaption":"OK"
});
return;
}else if(remittingDate.length<8){
_popWin({
"title":"匯款日期錯誤",
"content":"請填您的匯款日期",
"yesCaption":"OK"
});
}else{
field_data.od_paid_date = remittingDate;
field_data.debit_account = remittingAccount;
}
}
console.log(field_data);
if($("[wx-role='chkDeposit']").is(":checked") || $("[wx-role='chkTransferring']").is(":checked")){
if(!jQuery.isEmptyObject(field_data)){
var api = _gfApi();
api.query = {"od_code":odCode};
api.view = {};
api.data = [field_data];
$.go(_apiUrl+"def/worxpace/checkRemittanceInfo",api,function(res,st,jx){
$.clog(api.query); //TEST
$.clog("checkRemittanceInfoExisted");//TEST
switch(res.code){
case 200:
_popWin({
"title":"您已回傳過匯款資訊",
"content":"您上一次輸入的
【 帳號 】 : "+res.data.debit_account+"
【匯款日期】: "+res.data.od_paid_date+"
您是否要覆蓋上一次的輸入 ?",
"yesCaption":"是",
"yesAction":function(){
var userCode = res.data.od_mobile;
sendRemittanceInfo(field_data,odCode,userCode);
},
"noCaption": "不用了"
});
break;
case 201:
_popWin({
"title":"匯款資訊已回傳",
"content":"感謝您的回覆,我們將儘快為您處理訂單。
(為了您的資料安全,稍後將回到首頁)",
"yesCaption":"OK",
"yesAction":function(){
window.location.reload();
}
});
break;
case 202:
$("[wx-role='remittanceInfo']").hide();
break;
case 400:
_popWin({
"title":"[ 400 ] 請求錯誤",
"content":"系統顯示錯誤,請洽客服中心",
"yesCaption":"OK"
});
break;
case 404:
_defNotice(res.code,res.response);
break;
} // end of switch
});
}// END of !jQuery.isEmptyObject(field_data)
}else{
_popWin({
"title":"請選擇匯款的方式",
"content":"請勾選 【 ATM匯款 】 或是 【 無摺存款 】",
"yesCaption":"OK"
});
return;
}
}
/*________ 進行更新 匯款帳號資訊 _________*/
function sendRemittanceInfo(field_data,odCode,userCode){
var api = _gfApi();
api.query = {"od_code":odCode,"od_mobile":userCode};
api.view = {};
api.data = [field_data];
$.go(_apiUrl+"def/worxpace/sendRemittanceInfo",api,function(res,st,jx){
//$.clog("sendRemittanceInfo");//TEST
switch(res.code){
case 200:
_popWin({
"title":"您已回傳匯款資訊",
"content":"感謝您的回覆,我們將儘快為您處理訂單。
(為了您的資料安全,稍後將回到首頁)",
"yesCaption":"OK",
"yesAction":function(){
window.location.reload();
}
});
break;
case 400:
_popWin({
"title":"[ 400 ] 請求錯誤",
"content":"系統顯示錯誤,請洽客服中心",
"yesCaption":"OK"
});
break;
}
});
}
/*___________ 使用信用卡付款,檢查信用卡是否正確 _____________*/
function payByCreditCard(){
//______declare variables to stands for date.
var today = new Date();
var expFrom = today.getFullYear();
var expTo = today.getFullYear()+10;
var c1 = $("[wx-role='inpCreditCardNum'][wx-field='1']").val();
var c2 = $("[wx-role='inpCreditCardNum'][wx-field='2']").val();
var c3 = $("[wx-role='inpCreditCardNum'][wx-field='3']").val();
var c4 = $("[wx-role='inpCreditCardNum'][wx-field='4']").val();
//__ loop expiration date ___
for (var i = expFrom ; i <= expTo; i++) {
$("[wx-role='sltExpirationYear']").append("");
}
//______ 確認付款按鈕: 取得信用卡資料
//______FIXIT
$("[wx-role='btnPayByCreditCard']").on("click",function(event){
event.preventDefault();
var cardNum = c1+c2+c3+c4;
var od_card_num = c4;
var email = $("[wx-role='inpCardHolderEmail']").val();
var mobile = $("[wx-role='inpCardHolderMobile']").val();
var name = $("[wx-role='inpCardHolderName']").val();
var cvc = $("[wx-role='inpCVC']").val();
var validDate = [];
var expirationDate="";
var validYear = $("[wx-role='sltExpirationYear']").val().split("");
validYear = validYear[2]+validYear[3];
validDate.push($("[wx-role='sltExpirationMonth']").val());
validDate.push(validYear);
expirationDate = validDate.join("/");// 01/18
if($.isNothing(name)===true){
_popWin({
"title":"持卡人姓名欄位空白",
"content":"請輸入持卡人姓名",
"noCaption":"OK"
});
return;
}
if(!isValidMobile(mobile)){
_popWin({
"title":"手機號碼格式錯誤",
"content":"您所輸入的手機號碼格式錯誤,請重新輸入",
"noCaption":"OK"
});
return;
}
if(!isValidEmailAddress(email)){
_popWin({
"title":"Email 格式錯誤",
"content":"您所輸入的 Email 格式錯誤,請重新輸入",
"noCaption":"OK"
});
return;
}
if($.isNothing(cvc)===true ||cvc.length<3){
_popWin({
"title":"信用卡檢核碼錯誤",
"content":"請輸入信用卡卡背三碼檢核碼",
"noCaption":"OK"
});
return;
}
if(cardNum.length<16){
_popWin({
"title":"信用卡卡號長度錯誤",
"content":"您所輸入的信用卡卡號長度不足,請重新輸入",
"noCaption":"OK"
});
return;
}else{
if(!doLuhnChecking(cardNum) || cardNum.length<16){
//$.clog("cardNum.length :" +cardNum.length);//TEST
_popWin({
"title":"信用卡卡號錯誤",
"content":"您所輸入的信用卡卡號錯誤,請重新輸入",
"noCaption":"OK"
});
return;
}
//______ 先丟出信用卡連線失敗
if(doLuhnChecking(cardNum) && isValidEmailAddress(email) && isValidMobile(mobile) && !$.isNothing(name) && !$.isNothing(cvc)){
_popWin({
"title":"信用卡連線失敗",
"content":"信用卡伺服器連線失敗。",
"noCaption":"OK"
});
}
}
});
}
function initEventsOrder(){
//_____________ 聯絡人地址 ___________________
$("#twzipcode").twzipcode(); //呼叫顯示縣市地區郵遞區號
$("#twzipcode select,#twzipcode input").addClass("hide");
$("#twzipcode [wx-role]").removeClass('hide');
$("[wx-role='inpAddress'][wx-field='od_addr_address']").focus(function(event){
var postcode = $("#twzipcode").twzipcode("get","zipcode");
$("[wx-role='inpPostcode']").val(postcode);
if(postcode==""){
$(this).blur();
_popWin({
"title":"郵遞區號未填",
"content":"請填郵遞區號",
"noCaption":"OK"
});
}
});
//_____________ 收件人地址 ___________________
$("#twzipcode_addr").twzipcode(); //呼叫顯示縣市地區郵遞區號
$("#twzipcode_addr select,#twzipcode_addr input").addClass("hide");
$("#twzipcode_addr [wx-role]").removeClass('hide');
$("[wx-role='inpNewAddress'][wx-field='od_new_address']").focus(function(event){
var postcode = $("#twzipcode_addr").twzipcode("get","zipcode");
$("[wx-role='inpNewPostcode']").val(postcode);
if(postcode==""){
$(this).blur();
_popWin({
"title":"郵遞區號未填",
"content":"請填郵遞區號",
"noCaption":"OK"
});
}
});
// ______ 開啟成為代收人欄位 ________20180702 FIXIT 加描述
$("[wx-role='chkBeAPickUpPerson']").on("change",function(){
if($(this).is(":checked")){
$(this).prop("checked",true);//prop("checked", false);
$("[wx-role='chkPickupCode']").prop("disabled",true);
//$.clog("pickup code : " + $("[wx-role='chkBeAPickUpPerson']").val());//TEST
}else{
$(this).prop("checked",false);
$("[wx-role='chkPickupCode']").prop("disabled",false);
//$.clog("pickup code : unchecked"); //TEST
}
});//END OF Pickup person
$("[wx-role='chkPickupCodeParty']").on("change",function(){
if($(this).is(":checked")){
$("[wx-role='chkPickupCode']").prop("checked",true);
$("[wx-role='chkPickupCode']").trigger("change");
$("[wx-role='inpPickupCode']").val("ODSPTY2018");
$("[wx-role='inpPickupCode']").trigger("blur");
}else{
$("[wx-role='chkPickupCode']").prop("checked",false);
$("[wx-role='chkPickupCode']").trigger("change");
}
});
// ______ 開啟寄給代收人欄位 ________20180703 FIXIT 加描述
$("[wx-role='chkPickupCode']").on("change",function(){
if($(this).is(":checked")){
$("[wx-role='inpPickupCode']").removeAttr("disabled"); //prop("disabled",false)
$("[wx-role='labPickupCode']").append("✱");
$("[wx-role='chkBeAPickUpPerson']").prop("disabled",true);
$("[wx-role='chkImportCustomer']").attr("disabled",true);
$("[wx-role='chkImportCustomer']").prop("checked",false);
$("[wx-role='chkImportCustomer']").change();
$("[wx-role='inpPickupCode']").unbind("blur");
$("[wx-role='inpPickupCode']").blur(function(){
if($(this).val()!==""){
getPickUpPerson($(this).val());
}
});
}else{
$("[wx-role='inpPickupCode']").val("");
$("[wx-role='inpPickupCode']").prop("disabled","disabled"); ////prop("disabled",true)
$("[wx-role='labPickupCode'] > span").remove();
$("[wx-role='chkBeAPickUpPerson']").prop("disabled",false);
$("[wx-role='inpPickupPerson']").val("");
$("[wx-role='inpPickupMobile']").val("");
$("#twzipcode_addr [wx-role]").val("");
$("[wx-role='inpPickupAddress']").val("");
$("[wx-role='inpPickupPerson']").removeAttr("disabled");
$("[wx-role='inpPickupMobile']").removeAttr("disabled");
$("#twzipcode_addr [wx-role]").removeAttr("disabled");
$("[wx-role='inpPickupAddress']").removeAttr("disabled");
$("[wx-role='chkImportCustomer']").removeAttr("disabled");
$("[wx-role='txtOrderMemo']").val($("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,''));
$("[wx-role='spanShippingFee']").html(80);
var shippingFee = parseInt($("[wx-role='spanShippingFee']").html());
var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html());
totalAmount = parseInt(shippingFee+cartTotal);
$("[wx-role='spanTotalAmount']").html(totalAmount);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
$.clog("shippingFee : " + shippingFee);
$.clog("cartTotal: " + cartTotal);
$.clog("totalAmount : " + totalAmount);
$.clog("[wx-role='spanTotalAmount'] : "+$("[wx-role='spanTotalAmount']").html());
}
});//END OF Pickup person
//________ 同訂購人資訊 FOCUS____________20180702
$("[wx-role='chkImportCustomer']").on("change",function(){
if($(this).is(":checked")){
$("[wx-role='inpPickupAddress']").val($("[wx-role='inpAddress']").val());
$("#twzipcode_addr").twzipcode('set',{
'county' :$("[wx-role='sltCounty']").val(),
'district':$("[wx-role='sltDistrict']").val()
});
$("[wx-role='inpPickupMobile']").val($("[wx-role='inpAddresseeMobile']").val());
$("[wx-role='inpPickupPerson']").val($("[wx-role='inpAddresseeName']").val());
}else{//清空收件人資訊
$("[wx-role='sltPickupCounty']").val("");
$("[wx-role='sltPickupDistrict']").val("");
$("[wx-role='inpPickupAddress']").val("");
$("[wx-role='inpPickupMobile']").val("");
$("[wx-role='inpPickupPerson']").val("");
$("#twzipcode_addr").twzipcode('set',{
'county' :'縣市',
'districtName':'鄉鎮市區'
});
}
}); //________ END OF 同聯絡人資訊 ____________
// ______ 結帳頁面按鈕事件 : 【 ##od_total_amount## 付款 】 _______
//之後改成正規表示法, TODOFIXIT
$("[wx-role='btnPayNow']").on("click",function(){
$("[wx-role='spanErrorMsg']").html(""); //確認密碼錯誤訊息清空
$(this).removeAttr("data-dismiss","modal");
var field_data = {};
var payMethod =parseInt($("[wx-role='sltPayMethod']").val());
var shippingArea=parseInt($("[wx-role='sltShippingArea']").val());
var shippingFee=parseInt($("[wx-role='spanShippingFee']").html());
var odSubtotal=parseInt($("[wx-role='spanOrderSubtotal']").html());
var odTotalAmount =parseInt($("[wx-role='spanTotalAmount']").html());
//訂購人info
var customer = $("[wx-role='inpAddresseeName']").val();
var tel = $("[wx-role='inpAddresseeTel']").val();
var mobile =$("[wx-role='inpAddresseeMobile']").val();
var birthdate = $("[wx-role='inpCustomerBirth']").val();
var postcode =$("#twzipcode").twzipcode("get","zipcode");
postcode = postcode[0];
var addrCounty = $("[wx-role='sltCounty']").val();
var addrDist = $("[wx-role='sltDistrict']").val();
var address = $("[wx-role='inpAddress']").val();
//收件人info
var pickupPerson = $("[wx-role='inpPickupPerson']").val();
var pickupMobile = $("[wx-role='inpPickupMobile']").val();
var pickupPostcode = $("[wx-role='inpPickupPostcode']").val();
var pickupCounty = $("[wx-role='sltPickupCounty']").val();
var pickupDist = $("[wx-role='sltPickupDistrict']").val();
var pickupAddr = $("[wx-role='inpPickupAddress']").val();
var customerFB = $("[wx-role='inpAddresseeFB']").val();
var customerEmail = $("[wx-role='inpCustomerEmail']").val();
var customerPsw = $("[wx-role='inpCustomerPsw']").val();
// alert(customerPsw);
// return;
var memo = $("[wx-role='txtOrderMemo'][wx-field='od_memo']").val();
if(customer.length < 2){
_popWin({
"title":"訂購人欄位不可空白",
"content":"請輸訂購人全名",
"noCaption":"OK"
});
return;
}else{
field_data.od_customer = customer;
}
// TODOFIXIT 加驗證
if(!isValidEmailAddress(customerEmail)){
_popWin({
"title":"Email 格式錯誤",
"content":"請填入正確的Email",
"noCaption":"OK"
});
return;
}else{
field_data.od_email = customerEmail;
}
if(customerFB.length === 0){
_popWin({
"title":"FB暱稱不可空白",
"content":"請填入您的FB暱稱",
"noCaption":"OK"
});
return;
}else{
field_data.od_customer_fb = customerFB;
}
if(mobile.length < 8 || mobile.substr(0,1)!=="0" ){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"手機號碼格式錯誤",
"content":"請重新輸入您的聯絡手機共10碼數字,0 為開頭",
"noCaption":"OK"
});
return;
}else{
field_data.od_mobile = mobile;
}
if(tel !=""){
if(tel.length < 8 || tel.substr(0,1)!=="0"){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"聯絡電話格式錯誤",
"content":"請重新輸入您包含區碼的市話,0 為開頭",
"noCaption":"OK"
});
return;
}else{
field_data.od_tel = tel;
}
}
if(birthdate.length < 8){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"生日格式錯誤",
"content":"請重新輸入您的生日",
"noCaption":"OK"
});
return;
}else{
field_data.od_birthdate = birthdate;
}
if(customerPsw.length < 8){
_popWin({
"title":"密碼長度不足",
"content":"請重新輸入您的訂單密碼",
"noCaption":"OK"
});
return;
}else{
field_data.od_psw = customerPsw;
}
if(postcode.length < 3){
_popWin({
"title":"郵遞區號尚未輸入",
"content":"請重新輸入3碼郵遞區號",
"noCaption":"OK"
});
return;
}else{
field_data.od_addr_postcode = postcode;
}
if(addrCounty.length < 2){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"縣市尚未選擇",
"content":"請重新選擇縣市",
"noCaption":"OK"
});
return;
}else{
field_data.od_addr_county = addrCounty;
}
if(addrDist.length < 2){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"區域尚未選擇",
"content":"請重新選擇區域",
"noCaption":"OK"
});
return;
}else{
field_data.od_addr_district = addrDist;
}
if(address.length < 5){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"地址尚未填寫",
"content":"請填寫地址",
"noCaption":"OK"
});
return;
}else{
field_data.od_addr_address = address;
}
// // 代收
// if($("[wx-role='chkCollectPerson']").is(":checked")){
// field_data.pickup_code = pickupCode;
// //$.clog("pickupCode : " + pickupCode);
// }
//____________ 收件人部分欄位驗證 ______________
//pickup_code
if($("[wx-role='chkPickupCode']").is(":checked")){
var pickUpCode = $("[wx-role='inpPickupCode']").val(); //輸入代收人序號
if(pickUpCode.length ==0){
_popWin({
"title":"代收人序號不可空白",
"content":"請輸代收人序號",
"noCaption":"OK"
});
return;
}
}// END of chkPickupCode
if(pickupPerson.length < 2){
_popWin({
"title":"收件人欄位不可空白",
"content":"請輸收件人全名",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_person = pickupPerson;
}
if(pickupMobile.length < 8 || pickupMobile.substr(0,1)!=="0" ){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"收件人手機號碼格式錯誤",
"content":"請重新輸入收件人的聯絡手機共10碼數字,0 為開頭",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_mobile = pickupMobile;
}
if(pickupPostcode.length < 2){
_popWin({
"title":"收件人郵遞區號尚未輸入",
"content":"請重新輸入3碼郵遞區號",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_postcode = pickupPostcode;
}
if(pickupCounty.length < 2){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"收件人縣市尚未選擇",
"content":"請重新選擇縣市",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_county = pickupCounty;
}
if(pickupDist.length < 2){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"收件人區域尚未選擇",
"content":"請重新選擇區域",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_district = pickupDist;
}
if(pickupAddr.length < 5){
// alert("請輸入您包含區碼的聯絡電話");
_popWin({
"title":"收件人地址尚未填寫",
"content":"請填寫地址",
"noCaption":"OK"
});
return;
}else{
field_data.pickup_address = pickupAddr;
}
//____________ 收件人 END _____________________
if(memo !=""){
field_data.od_memo = memo;
}
/*____________ 進行結帳 ____________*/
if(!jQuery.isEmptyObject(field_data)){
// if($("[wx-role='inpConfirmPassword']").val() === customerPsw){
if(payMethod===2){ //ATM 付款
//$.clog(payMethod);//TEST
//$.clog(field_data);
$(this).removeAttr("data-target","#modal_pay_credit");
$(this).removeAttr("data-dismiss","modal");
$(this).attr("data-target","#modal_comfirm_psw"); //顯示確認密碼視窗
$("#input_confirm_password").trigger("focus");
// field_data.od_pay_way =payMethod ;
// field_data.od_shipping_area =shippingArea ;
// field_data.shipping_fee = shippingFee;
// field_data.od_subtotal =odSubtotal ;
// field_data.od_total_amount = odTotalAmount;
/*___ 密碼確認 ___*/
//FIXIT TODO if(psw === birthdate4){ //比對密碼是否和生日月日一樣,一樣的話,跳出視窗
// confirmPassword(field_data);
/*___ END OF 密碼確認 ___*/
//}
}else if(payMethod==1){
//再寫一次 預防LINEPAY
$(this).removeAttr("data-target","#modal_pay_credit");
$(this).removeAttr("data-dismiss","modal");
$(this).attr("data-target","#modal_comfirm_psw");
//$.clog(payMethod);//TEST
_popWin({
"title":"LINE PAY 尚未建置",
"content":"LINE PAY 付款鏈接建置中",
"noCaption":"OK",
"noAction":function(){
$("[wx-role='sltPayMethod'] option[value=0]").prop('selected',true);//FIXED 回到預設值 : 信用卡
}
});
return;
}else{ //信用卡 FIXIT current circumstance : DO NOTHING
//$.clog(payMethod);//TEST
//$.clog("pay with plastic");//TEST
$(this).attr("data-dismiss","modal");
$("#modal_pay_credit").modal("show");// $(this).attr("data-target","#modal_pay_credit");
$(this).removeAttr("data-target","#modal_comfirm_psw");
//TODO FIXIT 信用卡支付 current circumstance : DO NOTHING
}
}else{
_popWin({
"title":"確認密碼欄位與設定訂單密碼",
"content":"請填完以下收件資訊",
"yesCaption":"OK"
});
}
}); // END OF btnPayNow click
//代收序號 取得代收人資料
function getPickUpPerson(pickUpCode){
//$.clog("getPickUpPerson");//TEST
var returnCode = "";
var api = _gfApi();
api.query = {"p_code":pickUpCode};
$.go(_apiUrl+"def/worxpace/getPickUpPerson",api,function(res,st,jx){
// res.code is a number
$("[wx-role='txtOrderMemo']").val($("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,''));
var shippingFee = parseInt($("[wx-role='spanShippingFee']").html());
var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html());
totalAmount = parseInt(shippingFee+cartTotal);
$("[wx-role='spanTotalAmount']").html(totalAmount);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
switch(res.code){
case 200:
//$.clog("getPickUpPerson Found"); //TEST
//取得代收人資料
for(var i in res.data){
//$.clog(res.data[i]);
//TESTFIXIT 填入收件人資料,再將所有欄位改成disabled
$("[wx-role='inpPickupPerson']").val(res.data[i].p_name);
$("[wx-role='inpPickupMobile']").val(res.data[i].p_mobile);
//取得資料庫中會員地址
$("#twzipcode_addr").twzipcode('set',{
'zipcode': res.data[i].p_postcode,
'county' :res.data[i].p_county,
'district':res.data[i].p_district
});
$("[wx-role='inpPickupAddress']").val(res.data[i].p_address);
$("[wx-role='inpPickupPerson']").attr("disabled",true);
$("[wx-role='inpPickupMobile']").attr("disabled",true);
$("[wx-role='inpPickupMobile']").attr("disabled",true);
$("#twzipcode_addr [wx-role]").attr("disabled",true);
$("[wx-role='inpPickupAddress']").attr("disabled",true);
$("[wx-role='spanShippingFee']").html(0);
$("[wx-role='txtOrderMemo']").val("[車友代收]"+$("[wx-role='txtOrderMemo']").val().replace(/\[車友代收\]/g,''));
var shippingFee = $("[wx-role='spanShippingFee']").html();
var cartTotal = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html());
totalAmount = parseInt(shippingFee+cartTotal);
$("[wx-role='spanTotalAmount']").html(totalAmount);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
$.clog("B_shippingFee : " + shippingFee);
$.clog("B_cartTotal: " + cartTotal);
$.clog("B_totalAmount : " + totalAmount);
$.clog("B_[wx-role='spanTotalAmount'] : "+$("[wx-role='spanTotalAmount']").html());
/*
$("[wx-role='spanOrderSubtotal'][wx-for='odTableRow']").html(cartTotal);
$("[wx-role='spanTotalAmount']").html(totalAmount);
*/
// $("[wx-role='btnBackToCart']").trigger("click");
// setTimeout(function(){
// $("[wx-role='btnCheckout']").trigger("click");
// },800);
//107071218
}
break;
case 404:
_popWin({
"title":"代收人尚未完成訂單匯款",
"content":"您所輸入的代收人序號尚未確認匯款,
無法啟用。若需要此代收人為您代收商品,
請稍後再訂",
"noCaption":"OK"
});
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}
// ____________ 寄給代收人 : 輸入代收人序號後 事件 keydown ____________
/*
field_data.od_customer
field_data.od_email
field_data.od_customer_fb
field_data.od_mobile
field_data.od_tel
field_data.od_birthdate
field_data.od_psw //////
field_data.od_addr_postcode
field_data.od_addr_county
field_data.od_addr_district
field_data.od_addr_address
field_data.pickup_code ////////
field_data.pickup_person
field_data.pickup_mobile
field_data.pickup_postcode
field_data.pickup_county
field_data.pickup_district
field_data.pickup_address
field_data.od_memo
*/
//modal_comfirm_psw 視窗密碼輸入
// FIXIT 密碼欄位要檢驗只能是數字?
$("[wx-role='btnConfirmPassword']").on("click",function(event){
event.preventDefault();
var field_data = {};
field_data.od_psw = $("[wx-role='inpCustomerPsw']").val();
var confirmPassword = $("[wx-role='inpConfirmPassword']").val();
if(confirmPassword.length == 0 ){
// 您尚未輸入確認密碼
$("[wx-role='spanErrorMsg']").html("您尚未輸入確認密碼");
}else{
// 有輸入密碼//輸入密碼錯誤
if(confirmPassword.length != field_data.od_psw.length || confirmPassword != field_data.od_psw){
$("[wx-role='spanErrorMsg']").html("確認密碼錯誤");
}
if(confirmPassword.length === field_data.od_psw.length && confirmPassword === field_data.od_psw){
// $("[wx-role='spanErrorMsg']").html("成立訂單");
field_data.od_pay_way =parseInt($("[wx-role='sltPayMethod']").val());
field_data.od_shipping_area=parseInt($("[wx-role='sltShippingArea']").val());
field_data.shipping_fee=parseInt($("[wx-role='spanShippingFee']").html());
field_data.od_subtotal=parseInt($("[wx-role='spanOrderSubtotal']").html());
field_data.od_total_amount =parseInt($("[wx-role='spanTotalAmount']").html());
//訂購人info
field_data.od_customer = $("[wx-role='inpAddresseeName']").val();
field_data.od_email = $("[wx-role='inpCustomerEmail']").val();
field_data.od_customer_fb = $("[wx-role='inpAddresseeFB']").val();
field_data.od_tel = $("[wx-role='inpAddresseeTel']").val();
field_data.od_mobile =$("[wx-role='inpAddresseeMobile']").val();
field_data.od_birthdate = $("[wx-role='inpCustomerBirth']").val();
field_data.od_addr_postcode =$("#twzipcode").twzipcode("get","zipcode");
field_data.od_addr_postcode = field_data.od_addr_postcode[0];
field_data.od_addr_county = $("[wx-role='sltCounty']").val();
field_data.od_addr_district = $("[wx-role='sltDistrict']").val();
field_data.od_addr_address = $("[wx-role='inpAddress']").val();
//收件人info
field_data.pickup_person = $("[wx-role='inpPickupPerson']").val();
field_data.pickup_mobile = $("[wx-role='inpPickupMobile']").val();
field_data.pickup_postcode = $("[wx-role='inpPickupPostcode']").val();
field_data.pickup_county = $("[wx-role='sltPickupCounty']").val();
field_data.pickup_district = $("[wx-role='sltPickupDistrict']").val();
field_data.pickup_address = $("[wx-role='inpPickupAddress']").val();
//
// alert(customerPsw);
// return;
field_data.od_memo = $("[wx-role='txtOrderMemo'][wx-field='od_memo']").val();
// $("modal_comfirm_psw").modal("hide");
//判斷有無勾選成為代收人,有的話取得收件人資料
if($("[wx-role='chkBeAPickUpPerson']").is(":checked")){
field_data.p_code = "##tabseq##";
field_data.p_name = field_data.pickup_person;
field_data.p_mobile = field_data.pickup_mobile;
field_data.p_postcode =field_data.pickup_postcode;
field_data.p_county =field_data.pickup_county;
field_data.p_district =field_data.pickup_district;
field_data.p_address = field_data.pickup_address;
}
if($("[wx-role='chkPickupCode']").is(":checked")){
if( $("[wx-role='inpPickupCode']").val() !=""){
field_data.pickup_code = $("[wx-role='inpPickupCode']").val();
}
}
//$.clog(field_data);
placeOrder(field_data);
$('#modal_comfirm_psw').modal('toggle');
}
}
});
//FIXITFOCUS 再多檢查幾次
//inpConfirmPassword 確認密碼並結帳 的keydown事件。 避免按下enter 後會reload及造成錯誤。
$("[wx-role='inpConfirmPassword']").on("keydown",function(e){
// console.log("inpConfirmPassword KEYDOWN");
var key = e.which;
if(key == 13){
$("[wx-role='btnConfirmPassword']").click();
// console.log("btnConfirmPassword");
return false;
}
});
//FIXIT
/* ____ 取消訂單 Cancel Order ____ */
$("body").on("click","[wx-role='btnCancelOrder']",function(){
// update od_status as 3 已取消
var odSn = $(this).wx("value");
var odCode = $(this).wx("for");
var userCode = $(this).wx("orival");//wx-orival
//$.clog("[A] click cancelOrder");
_popWin({
"title":"編號 : " + odCode + " 訂單確定要取消?",
"content":"【 注意 】 由於近期訂購與出貨流程繁複,若 『 尚未匯款 』可直接取消訂單。
若『 已經匯款 』的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理退款事宜,如有不便之處,敬請見諒。",
"yesCaption":"OK",
"yesAction":function(){
cancelOrder(odSn,odCode,userCode);
},
"noCaption":"不用了"
});
});
$("body").on("keypress","[wx-role='btnCancelOrder']",function(){
var odSn = $(this).wx("value");
var odCode = $(this).wx("for");
var userCode = $(this).wx("orival");//wx-orival
//$.clog("[B] keypress cancelOrder");
_popWin({
"title":"編號 : " + odCode + " 訂單確定要取消?",
"content":"【 注意 】 由於近期訂購與出貨流程繁複,若 『 尚未匯款 』可直接取消訂單。
若『 已經匯款 』的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理退款事宜,如有不便之處,敬請見諒。",
"yesCaption":"OK",
"yesAction":function(){
cancelOrder(odSn,odCode,userCode);
},
"noCaption":"不用了"
});
});//____________ Cancel Order _______________
// ______ 查詢訂單 Search Orders ________
$("[wx-role='btnSearchOrders']").on("click",function(){
var field_data = {};
var name = $("[wx-role='inpOrderCustomerName']").val();
var mobile = $("[wx-role='inpOrderCustomerMobile']").val();
var psw = $("[wx-role='inpOrderCustomerPsw']").val();
if(!isValidMobile(mobile)){
_popWin({
"title":"mobile 格式錯誤",
"content":"您所輸入的 mobile 格式錯誤,請重新輸入",
"noCaption":"OK"
});
return;
}
if(name.length<2){
_popWin({
"title":"訂購人姓名 格式錯誤",
"content":"請輸入當初填寫收件資料的全名",
"noCaption":"OK"
});
return;
}
if(psw.length != 8){ //FIXIT FIXIT 正規化檢查
_popWin({
"title":"密碼格式錯誤",
"content":"密碼長度錯誤,請輸入8位數字密碼",
"noCaption":"OK"
});
return;
}
if($.isNothing(name)===false && $.isNothing(mobile)===false && $.isNothing(psw)===false){
field_data.od_mobile = mobile;
field_data.od_customer= name;
field_data.od_psw= psw;
searchOrders(field_data);
}
});// END of function SearchOrder
} // End of function initEventsOrder
function cancelOrder(odSn,odCode,userCode){
//$.clog("cancelOrder");//TEST
var api = _gfApi();
api.query={"od_sn":odSn,"od_code":odCode};
api.view={};
api.data=[{"user_code":userCode}];
//$.clog(api.query); //TEST
// return;
$.go(_apiUrl+"def/worxpace/cancelOrder",api,function(res,st,jx){
switch(res.code){
case 200:
$("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide();
$("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide();
_popWin({
"title":"您的訂單目前為退貨處理中",
"content":"若『 已經匯款 』 的訂單,統一於 2018/10/28 Honda Odyssey 第三屆 全國大會師後處理相關退款事宜,如有不便之處,敬請見諒。
(為了您的資料安全,稍後將回到首頁)",
"yesCaption":"OK",
"yesAction":function(){
// window.location.assign(window.location.href);//刷新當前頁
window.location.reload();
// searchOrders();
// $("[wx-role='spanOrderStatus'][wx-for='"+ +"']").
}
});
break;
case 201:
$("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide();
$("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide();
_popWin({
"title":"訂單已經取消",
"content":"訂單編號 "+odCode+" 已取消。
(為了您的資料安全,稍後將回到首頁)",
"yesCaption":"OK",
"yesAction":function(){
// window.location.assign(window.location.href);//刷新當前頁
window.location.reload();
// searchOrders();
// $("[wx-role='spanOrderStatus'][wx-for='"+ +"']").
}
});
break;
case 402:
$("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide();
$("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide();
_popWin({
"title":"[ 402] 訂單已是取消狀態",
"content":"訂單已取消",
"yesCaption":"OK"
});
break;
case 403:
$("[wx-role='btnRemittance'][wx-for='"+odCode+"']").hide();
$("[wx-role='btnCancelOrder'][wx-for='"+odCode+"']").hide();
_popWin({
"title":"[ 403 ] 退貨已在處理中",
"content":"退貨已在處理中",
"yesCaption":"OK"
});
break;
case 404:
_popWin({
"title":"[DEFAULT] 不正確的請求",
"content":"[DEFAULT] 搜尋欄位異常錯誤",
"yesCaption":"OK"
});
break;
}
});
}
function sendMessage(field_data){
//$.clog("________ sendMessage _________");//TEST
var api = _gfApi();
api.data=[field_data];
//$.clog(api.data); //TEST
$.go(_apiUrl+"def/worxpace/sendMessage",api,function(res,st,jx){
switch(res.code){
case 200:
$("input[wx-for='message']").val("");
$("[wx-role='txtCustomerMessage']").val("");
//$.clog("您已完成留言");//TEST
_popWin({ "title":"您已完成留言",
"content":"謝謝您寶貴的建議, 我們會盡速與您連繫並回覆您的意見。",
"noCaption":"OK",
});
break;
case 404:
//$.clog("資料新增失敗");//TEST
_popWin({
"title":"留言訊息發送失敗",
"content":"Ooops,留言訊息發送失敗",
"noCaption":"OK",
});
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}
/*____________________ SHOPPING CART _________________________*/
function countItems(){
var api = _gfApi();
api.view={};
$.go(_apiUrl+"def/worxpace/countItems",api,function(res,st,jx){
// res.code is a number
switch(res.code){
case 200:
$("[wx-role='spanCountCartItem']").html(res.data.count);
break;
case 404:
//$.clog("added to cart - fail");//TEST
_popWin({
"title":"added to cart - fail",
"content":"Ooops,added to cart - fail",
"noCaption":"OK",
});
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}
function addToCart(field_data){
var api = _gfApi();
api.data=[field_data];
api.view={};
//$.clog(api.data); //TEST
$.go(_apiUrl+"def/worxpace/addToCart",api,function(res,st,jx){
// res.code is a number
switch(res.code){
case 200:
//$.clog("________________added to cart_______________");//TEST
$("[wx-role='spanCountCartItem']").html(res.data.count);
_popWin({
"title":"商品已加入購物車",
"content":"商品已加入購物車\n-要選購其它尺寸/顏色請按繼續購物,\n-點選其它尺寸/顏色後再次加入購物車\n-或者您可選擇「前往結帳」立即完成訂單",
"yesCaption":"前往結帳",
"yesAction":function(){
//close photoswipe FIXED
$(".pswp__button--close").click();
// set z-index of shopping cart modal as over 1500
viewCart("btnViewCart");
},
"noCaption":"繼續購物",
"noAction":function(){}
});
break;
case 404:
//$.clog("added to cart - fail");//TEST
_popWin({
"title":"added to cart - fail",
"content":"Ooops,added to cart - fail",
"noCaption":"OK",
});
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}// END of addToCart
function viewCart(btnName) {
var api = _gfApi();
api.view = {};
$.go(_apiUrl + "def/worxpace/viewCart", api, function (res, st, jx) {
switch (res.code) {
case 200:
var total = 0;
var totalAmount = 0;
switch (btnName) {
/* ______ 首頁的購物車圖示按鈕 ______ */
case "btnViewCart":
$("#modal_cart").modal("show");//顯示購物車的modal視窗
$("[wx-role='tableRow'][wx-reusename='tableCart'] td").remove();//清空購物車商品列表
// _____ 紀錄加入購物車的商品數量變數
var normalQty = 0; //常態商品
var preOrderQty = 0; //預購商品(非衣服、非活動限定商品)
var preOrderClothesQty = 0; //預購商品(衣服)
// var ExclusivelySoldQty = 0; //活動限定(預購)商品
//____ 用 0 與 1 數字判別是否購買到 預購商品(衣服) | 常態商品 | 活動限定商品 | 非衣服、非活動限定商品 ____
var chkPreOrder = 0; //預購商品(非衣服、非活動限定商品)
var chkNormalOrder = 0; //常態商品
var chkPreOrderClothes = 0; //預購商品(衣服)
var chkExclusivelySold = 0; // 活動限定(預購)商品
var countQty = 0; //累加所有商品紀錄
for (var i in res.data) {
//產生購物車商品列表
$("#table_modal_cart").append($.reuse("tableCart", res.data[i]));
total += res.data[i].pdt_subtotal; // 該筆商品小計金額
// 紀錄商品數量 => 產品狀態 : [1]常態商品 | 產品類別 : [1]貼紙
if (parseInt(res.data[i].pdt_status) === 1) { //&& parseInt(res.data[i].pdt_category) === 1
$.clog("[1]常態商品勾選");
chkNormalOrder = 1;
normalQty += parseInt($("[wx-role='inpPdtQty'][wx-for='" + res.data[i].pdt_code + "'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val());
$("[wx-role='spanPdtSpec2'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide"); //不顯示尺寸 pdt_spec_2
} // end of pdt_status == 1
//紀錄預購商品 _ (衣服)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : [2]衣服 pdt_export : 2018-10-15
if(parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) === 2) {
chkPreOrderClothes = 1;
preOrderClothesQty += parseInt($("[wx-role='inpPdtQty'][wx-for='" + res.data[i].pdt_code + "'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val()); //取得預購商品的數量
$.clog("預購商品 _ (衣服)勾選 _ 出貨時間 : " + res.data[i].pdt_export);
}// end of pdt_status == 2
//紀錄預購商品 _ (配件)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : 除了衣服之外
if(parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) != 2) { //&& parseInt(res.data[i].pdt_category) === 3
if(res.data[i].pdt_export === "2018-10-15"){ //非活動限定商品
chkPreOrder = 1;
$.clog("預購商品勾選 _ 出貨時間 : " + res.data[i].pdt_export);
}else if(res.data[i].pdt_export === "2018-10-29"){ //活動限定商品
chkExclusivelySold = 1;
$.clog("活動限定商品 _ 出貨時間 : " + res.data[i].pdt_export);
}
preOrderQty += parseInt($("[wx-role='inpPdtQty'][wx-spec='" + res.data[i].pdt_spec_2 + "']").val()); //取得購買商品數量//[wx-cond='"+status+"']
}// end of pdt_status == 2
countQty = normalQty + preOrderQty + preOrderClothesQty; // 累加所有商品
} //end of loop for (var i in res.data)
$("[wx-role='inpTotalItems']").val(countQty); //[隱藏欄位] : 填入累加後所有商品數量
$("[wx-role='inpTotalClothes']").val(preOrderClothesQty); //[隱藏欄位] : 填入預購商品(衣服) 數量
//TODOFIXIT NOTICE 再用modal視窗,會干擾其他modal訊息,改用顯示訊息
//_____ 商品運送、確定購買等初始化 _____
$("[wx-role='divConfirmDelivery']").addClass("hide");
$("[wx-role='chkConfirmDelivery']").prop("disabled", false); //預設disabled
$("[wx-role='chkConfirmDelivery']").addClass("hide");//預設隱藏
$("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled
$.clog("disable b");
$("[wx-role='pDeliveryMessage']").addClass('hide'); //預設不顯示訊息。
// $("[wx-role='pDeliveryMessage']").css({"color": "blue","font-size": "16px"});
if (!$("[wx-role='chkConfirmDelivery']").is(":checked")) { // 勾選 [ 與最後到貨的商品一起出貨 ] 預設要是false
$("[wx-role='chkConfirmDelivery']").prop("disabled", false); //若有checked, 要移除disabled
$("[wx-role='btnCheckout']").attr("disabled", true); //結帳按鈕 加上disabled
$.clog("disable c");
} // _______ END OF 常態、預購混和 __________
/* _____4. 只有購買常態商品時 _____ */
if (chkNormalOrder != 0 && chkPreOrderClothes === 0 && chkPreOrder === 0 && chkExclusivelySold === 0) {
$("[wx-role='pDeliveryMessage']").html("");
$("[wx-role='pDeliveryMessage']").addClass('hide'); //顯示運送訊息
$("[wx-role='divConfirmDelivery']").addClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ]
$("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled
$.clog("disable e");
}
/* _____5. 只有購買預購商品(非活動限定)時 _____ */
if (chkNormalOrder === 0 && chkPreOrderClothes === 0 && chkPreOrder !=0 && chkExclusivelySold === 0) {
$("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息
$("[wx-role='chkConfirmDelivery']").removeClass("hide");//預設隱藏
$("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ]
$("[wx-role='pDeliveryMessage']").html("【注意】 預購商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。");
$("[wx-role='pDeliveryMessage']").removeClass("hide");
}
/* _____6. 只有購買 預購商品(衣服) 時 _____ */
if (chkNormalOrder === 0 && chkPreOrderClothes != 0 && chkPreOrder ===0 && chkExclusivelySold === 0) {
$("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息
$("[wx-role='pDeliveryMessage']").html("【注意】 『大會紀念衫』將於預購截止後,10月初至中旬統一寄送。");
$("[wx-role='btnCheckout']").attr("disabled", false); //結帳按鈕 預設disabled
$.clog("disable f");
}
/* _____1. 當商品和活動限定商品混在一起購買時。 _____ */
if (chkPreOrderClothes === 0 && chkExclusivelySold !=0) { //chkNormalOrder != 0 先移除掉常態商品
$("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息
$("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ]
$("[wx-role='chkConfirmDelivery']").removeClass("hide");//預設隱藏
$("[wx-role='pDeliveryMessage']").html("【 注意 】 加購的『活動限定商品』(若有加購其他『非活動限定商品』),將於 『 2018 Honda Odyssey 第三屆 全國大會師 』 活動後一併出貨,確定購買請勾選『與最後到貨的商品一起出貨』");
}// end of 1.
/* _____2. 若預購商品(衣服) 和 活動限定商品 、非限定商品混在一起購買時 _____ */
if (chkExclusivelySold != 0 && chkPreOrderClothes != 0){
$("[wx-role='btnCheckout']").attr("disabled", true); //結帳按鈕 加上disabled
$.clog("disable g");
$("[wx-role='pDeliveryMessage']").css({"color": "red"});
$("[wx-role='pDeliveryMessage']").html("【 注意 】 『活動限定商品』無法和『大會紀念衫』合併為同一訂單,必須分開訂購。
請將『大會紀念衫』或『活動限定商品』其中一項移除,才能進行結帳。");
$("[wx-role='pDeliveryMessage']").removeClass("hide");
}// end of 2.
/* _____3. 若常態商品和預購商品(衣服)混在一起買時 _____ */
if ((chkNormalOrder != 0 && chkPreOrderClothes != 0)||(chkPreOrder != 0 && chkPreOrderClothes != 0 && chkExclusivelySold === 0)){
$("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息
$("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ]
$("[wx-role='chkConfirmDelivery']").removeClass("hide");
$("[wx-role='pDeliveryMessage']").html("【 注意 】 購物車中含有預購的『大會紀念衫』,因此您訂購的所有商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。若分開訂購,運費也將分開計算。");
}// end of 3.
// /* _____2. 若預購商品(衣服) 和 其他非活動限定商品混在一起購買時 _____ */
// if (chkPreOrder != 0 && chkPreOrderClothes != 0 && chkExclusivelySold === 0) {
// $("[wx-role='pDeliveryMessage']").removeClass('hide'); //顯示運送訊息
// $("[wx-role='divConfirmDelivery']").removeClass("hide"); //顯示[ 與最後到貨的商品一起出貨 ]
// $("[wx-role='pDeliveryMessage']").html("【 注意 】 購物車中含有預購的『大會紀念衫』,因此您訂購的所有商品會於最後一個商品到貨後才寄送。若確定購買,請勾選『與最後到貨的商品一起出貨』。若分開訂購,運費也將分開計算。");
// }
/* _____ 填入 商品總計、運費、總金額 _____ */
var threshold = 0; // 計算購買商品累積金額 初始化
$("[wx-role='spanCartTotal']").html(total);
$("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").html(total);
$("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value", total);
threshold = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value"));
/* _____ 若是單筆預購的衣服滿4件,或是總金額大於3000元 顯示成為代收人選項 _____*/
if (preOrderClothesQty >= 4 || threshold >= 3000) {
$("[wx-role='spanShippingFee']").html(0); //default shipping fee is 0
$("[wx-role='spanFreeShipping']").removeClass('hide');
} else {
$("[wx-role='spanShippingFee']").html(80); //default shipping fee is 80
$("[wx-role='spanFreeShipping']").addClass('hide');
}
var shippingFee = parseInt($("[wx-role='spanShippingFee']").html());
totalAmount = parseInt(shippingFee + total);
$("[wx-role='spanOrderTotalAmount']").html(totalAmount);
break;
/* ______ 購物車清單的結帳按鈕 _________ */
case "btnCheckout":
// data-dismiss="modal" data-toggle="modal" data-target="#modal_checkout"
var preOrderClothesQty = $("[wx-role='inpTotalClothes']").val();
var threshold = parseInt($("[wx-role='spanOrderSubtotal'][wx-for='tableRow']").wx("value")); // 累積金額初始化
$("[wx-role='spanPdtSize']").removeClass("hide");
$("[wx-role='odTableRow'][wx-reusename='checkoutCart'] td").remove();
for (var i in res.data) {
//紀錄商品數量 => 產品狀態 : [1]常態商品 | 產品類別 : [1]貼紙
if (parseInt(res.data[i].pdt_status) === 1 && parseInt(res.data[i].pdt_category) === 1) {
$("[wx-role='spanPdtSize'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide");
}
//紀錄預購商品 _ (配件)的數量 產品狀態 : [2]上架(預購商品) | 產品類別 : [3]accessories 配件
if (parseInt(res.data[i].pdt_status) === 2 && parseInt(res.data[i].pdt_category) === 3) {
$("[wx-role='spanPdtSize'][wx-for='" + res.data[i].pdt_code + "']").addClass("hide");
}
$("#table_modal_checkout_cart").append($.reuse("checkoutCart", res.data[i]));
total += res.data[i].pdt_subtotal;
} // END of for loop
//若是單筆預購的衣服滿4件,或是總金額大於3000元 顯示成為代收人選項
if (preOrderClothesQty >= 4 || threshold >= 3000) {
$("[wx-role='labCollectPerson']").removeClass('hide');
$("[wx-role='chkCollectPerson']").removeClass('hide');
} else {
//若是單筆預購不達上述條件,移除代收人選項
$("[wx-role='labCollectPerson']").addClass('hide');
$("[wx-role='chkCollectPerson']").addClass('hide');
}
$("[wx-role='spanOrderSubtotal'][wx-for='odTableRow']").html(total);
var fee = parseInt($("[wx-role='spanShippingFee']").html());
$("[wx-role='spanTotalAmount']").html(fee + total);
//$.clog(btnName);//TEST
break;
}
break;
case 404:
$("#modal_cart").modal("hide");
//$.clog("[ view cart ] shopping cart is empty");//TEST
_popWin({
"title": "購物車是空的",
"content": "購物車尚無任何商品",
"noCaption": "OK"
});
break;
default:
_defNotice(res.code, res.response);
break;
}
});
} // END of viewCart
function updateCart(field_data){
// 成立訂單 及 個別刪完商品後。
//$.clog(field_data); //TEST
//$.clog("updateCart");//TEST
var api = _gfApi();
api.query = field_data;
api.view = {};
$.go(_apiUrl+"def/worxpace/updateCart",api,function(res,st,jx){
//$.clog(api.query); //TEST
//$.clog("updateCart");//TEST
switch(res.code){
case 200:
countItems();
viewCart("btnViewCart");
break;
case 400:
_defNotice(res.code,res.response);
break;
case 404:
_defNotice(res.code,res.response);
break;
} // end of switch
});
}
function removeItemFromCart(field_data){
//$.clog("removeItemFromCart: " + field_data);//TEST
var api = _gfApi();
api.query = field_data;
api.view = {};
$.go(_apiUrl+"def/worxpace/removeItemFromCart",api,function(res,st,jx){
//$.clog("removeItemFromCart");// TEST
switch(res.code){
case 200:
countItems();
viewCart("btnViewCart");// location.reload();
break;
case 400:
_defNotice(res.code,res.response);
break;
case 404:
_defNotice(res.code,res.response);
break;
} // end of switch
});
}
function emptyCart(){
// 成立訂單 及 個別刪完商品後。
var api = _gfApi();
api.view = {};
//$.clog(api.data); //TEST
$.go(_apiUrl+"def/worxpace/emptyCart",api,function(res,st,jx){
switch(res.code){
case 200:
$("#modal_checkout").modal("hide");
$("#modal_default").css("z-index","1200");
_popWin({
"title":"您已建立訂單",
"content":"非常感謝您的訂購,您可到網站上查詢您的所有訂單。
【 ATM付款方式 】
收款銀行:中國信託(822)
收款帳號:392-540-219-454
請匯款後透過本舖的「訂單查詢」內的「回報匯款」登錄匯款帳號後五碼及匯款時間。
【 匯款確認 】
週一 至 週五 10:00 ~ 17:00 ,國定假日與例假日休息。
【 貼紙製作時程 】 : 約3~5個工作天。
如購買預購商品,所有商品將於最後一個到貨商品一同出貨,到貨時間請詳見通知", //TODO 文字
"noCaption":"OK",
"noAction":function(){
location.reload(); // 先用reload
}
});
break;
} // end of switch
});
}
/* ____________________ ORDER SLIP _____________________ */
function placeOrder(field_data){
if(!jQuery.isEmptyObject(field_data)){
//加入其他訂單元素
field_data.od_code="##tabseq##";
field_data.od_datetime= getNow();
var api = _gfApi();
api.data=[field_data];
api.view = {};
//$.clog(api.data); // TEST
//$.clog("__________ do Place Order ___________"); // TEST
$.go(_apiUrl+"def/worxpace/placeOrder",api,function(res,st,jx){
switch(res.code){
case 200:
emptyCart();
//$.clog("place Order 200"); // TEST
break;
case 201:
emptyCart();
//$.clog("place Order 201"); // TEST
break;
case 404:
_popWin({
"title": "[ 404 A ] 請求錯誤",
"content":"系統顯示錯誤,請洽客服中心",
"noCaption":"OK"
});
break;
case 400:
_popWin({
"title":"[ 400 B ] 請求錯誤",
"content":"系統顯示錯誤,請洽客服中心",
"noCaption":"OK"
});
break;
case 401:
_popWin({
"title":"[ 401 ] E MAIL 錯誤",
"content":"您的訂單已經送出,但發送通知電子郵件錯誤,若你 無法在訂單查詢看到你的訂單,請重新下訂一次。",
"noCaption":"OK"
});
break;
case 405:
_popWin({
"title":"[ 405 ] E MAIL 錯誤",
"content":"您的訂單已經送出,但發送通知電子郵件錯誤,若你 無法在訂單查詢看到你的訂單,請重新下訂一次。",
"noCaption":"OK"
});
break;
default:
_popWin({
"title":"[ 000 ] 未定義的錯誤",
"content":"系統顯示錯誤,請洽客服中心",
"noCaption":"OK"
});
break;
} // end of switch
});
}else{ //若欄位有空白
_popWin({
"title":"有欄位未填",
"content":"請填完以下收件資訊",
"noCaption":"OK"
});
}
}
function searchOrders(field_data){
var api = _gfApi();
api.query=field_data;
api.view = {};
$.go(_apiUrl+"def/worxpace/searchOrders",api,function(res,st,jx){
switch(res.code){
case 200:
$("[wx-role='tableContainer'][wx-reusename='tableOrder']").remove();
$("#modal_odlist").modal("show");
for(var i in res.data){
//付款方式
res.data[i].od_pay_way = parseInt(res.data[i].od_pay_way);
res.data[i].od_pay_way =_wx_datsrc.payMethod[res.data[i].od_pay_way].pay_method_name;
//訂單狀態
res.data[i].od_status = parseInt(res.data[i].od_status);
res.data[i].od_status = _wx_datsrc.orderStatus[res.data[i].od_status].od_status_name;
//付款方式
res.data[i].od_pay_status = parseInt(res.data[i].od_pay_status);
res.data[i].od_pay_status = _wx_datsrc.payStatus[res.data[i].od_pay_status].pay_staus;
//$.clog(" res.data[i].od_pay_status : " + res.data[i].od_pay_status);
$("#list_order").append($.reuse("tableOrder",res.data[i]));
// //$.clog( "取消的訂單: " +_wx_datsrc.orderStatus[3].od_status_name);
//FIXIT 訂單狀態
var status = res.data[i].od_status;
var payStatus = res.data[i].od_pay_status;
if(status == _wx_datsrc.orderStatus[3].od_status_name || status == _wx_datsrc.orderStatus[5].od_status_name){
$("[wx-role='btnRemittance'][wx-for='"+res.data[i].od_code+"']").addClass("hide");
$("[wx-role='btnCancelOrder'][wx-for='"+res.data[i].od_code+"']").addClass("hide");
// //$.clog("取消的訂單: " + res.data[i].od_code);
// //$.clog("[wx-role='divRemittance'][wx-for='"+res.data[i].od_code+"']");
}
if(status ==_wx_datsrc.orderStatus[1].od_status_name && payStatus ==_wx_datsrc.payStatus[3].pay_staus){
$("[wx-role='btnRemittance'][wx-for='"+res.data[i].od_code+"']").addClass("hide");
}
searchOrderDetails(res.data[i].od_sn);
}
$("[wx-role='cntOrderQty']").text("您的訂單(共 "+res.trecs+" 筆)");
break;
case 404:
_popWin({
"title":"沒有訂單可供查詢",
"content":"您尚未訂購商品,目前沒有訂單。",
"noCaption":"OK",
});
//$.clog("資料新增失敗");// TEST
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}
function searchOrderDetails(odSn){
var api = _gfApi();
api.query={"od_sn":odSn};
api.view = {};
$.go(_apiUrl+"def/worxpace/searchOrderDetails",api,function(res,st,jx){
switch(res.code){
case 200:
// FIXIT
// $("[wx-role='OrdersDetails'][wx-reusename='tableOrdersDetails'][wx-for='"+res.data[i].od_sn+"'] td").remove();
// $("[wx-reusename='tableOrdersDetails'][wx-for='"+odSn+"'] tr").remove();
for(var i in res.data){
$("[wx-role='orderItem'][wx-for='"+res.data[i].od_sn+"']").append($.reuse("tableOrdersDetails",res.data[i]));
}
break;
case 404:
//$.clog("資料新增失敗");//TEST
_popWin({
"title":"沒有訂單可供查詢",
"content":"您尚未訂購商品,目前沒有訂單。",
"noCaption":"OK",
});
break;
default:
_defNotice(res.code,res.response);
break;
}
});
}
/*___________________ PAYMENT _________________________*/
function dynamicPlusAYear(){
}
function goToPayment(){
}
/*__________________ VALIDATION ________________*/
/*-- Luhn --*/
function doLuhnChecking(cardNum){
var sum = 0;
var even=cardNum.length % 2; //get even value
for(var i=0;i9){
digit-=9;
}
sum +=digit;
}
}
return (sum%10===0);
}
function isValidEmailAddress(emailAddress) {
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
return pattern.test(emailAddress);
}
function isValidMobile(mobile) {
var pattern =/^09[0-9]{6,10}#?[0-9]{1,4}$/;
return pattern.test(mobile);
}
/*__________________ POPUP WINDOWS ________________*/
function _popWin(pwInfo){
$("#modal_default_title").html(pwInfo.title);
$("#modal_default_body").html(pwInfo.content);
$("#modal_default_cancel").unbind("click");
if (pwInfo.noCaption!=null && pwInfo.noCaption!=""){
$("#modal_default_cancel").html(pwInfo.noCaption);
$("#modal_default_cancel").show();
if (pwInfo.noAction!=null) $("#modal_default_cancel").on("click",pwInfo.noAction);
}else{
$("#modal_default_cancel").hide();
}
$("#modal_default_confirm").unbind("click");
if (pwInfo.yesCaption!=null && pwInfo.yesCaption!=""){
$("#modal_default_confirm").html(pwInfo.yesCaption);
$("#modal_default_confirm").show();
if (pwInfo.yesAction!=null) $("#modal_default_confirm").on("click",pwInfo.yesAction);
}else{
$("#modal_default_confirm").hide();
}
if (typeof(pwInfo.delay)=="undefined"){
$("#modal_default").modal("toggle");
if (pwInfo.popAction!=null){
setTimeout(pwInfo.popAction,200);
}
}else{
setTimeout(function(popAction){
$("#modal_default").modal("toggle");
},pwInfo.delay);
if (pwInfo.popAction!=null){
setTimeout(pwInfo.popAction,pwInfo.delay+200);
}
}
}