/* * 三峡游船航线(PC端) * 2021-04-03 */ function YachtRoute() { var obj = this; /*航线港口*/ obj.RoutePortDataJson = []; obj.OneLevelPortDataJson = []; /*团期价格*/ obj.PriceDataJson = []; obj.config = { yachtID: '', routeID: '', start_ypid: '', start_ypname: '', end_ypid: '', end_ypname: '', ydate: '', roundtrip: false, openurl: false, orderby: '', onportid: '' }; /* * 航线团期查询(基本房型+基本国籍+计算价格属性) * */ obj.ListRouteYDate = function () { var ypids = obj.config.start_ypid + ',' + obj.config.end_ypid; var url = "/sanxia/r0.html?a=timetable2&ypids=" + ypids + "&baseRoom=1&baseNationality=1&computePrice=1&" + Math.random(); $.getJSON(url, function (data) { /*显示航线团期*/ obj.ShowRouteYDate(data); }); }; /* *显示航线团期 */ obj.ShowRouteYDate = function (dateprice) { var ydate = obj.config.ydate; /*显示航线团期Html*/ var jsonArray = obj.GetRouteYDate(dateprice); jsonArray = obj.SetState(jsonArray, ydate); var htmlStr = ''; for (var i = 0; i < jsonArray.length; i++) { var date = new Date(jsonArray[i].ydate.replace(/-/g, "/")); var datestr = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); htmlStr += '
' + (date.getMonth() + 1) + '月' + date.getDate() + obj.DayOfWeek(date.getDay()) + '
' + jsonArray[i].defaultprice + '
'; } $("#YDate .date").html(htmlStr); /*日期无团期时默认选中第一个*/ if ($("#YDate .date .slide").length > 0 && $("#YDate .date .on").length == 0) { $("#YDate .date .slide")[0].click(); } /*定位*/ if (slide) { slide.DingWei(); } }; /* * 选择航线团期 */ obj.SelectRouteYDate = function (btnobj, ydate) { obj.config.ydate = ydate; $(".rl_wrap .slide").removeClass("on"); $(btnobj).addClass("on"); var date = new Date(ydate.replace(/-/g, "/")); var str = date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日 ' + obj.DayOfWeek(date.getDay()); obj.config.ydate = ydate; $("#Select_YDate").attr("date", ydate); $("#Select_YDate h2").html(str); /*查询航线*/ obj.ListRoute(); }; /* * 获取航线团期起始价格 * @param {json} dateprice 团期价格 * return {json} [{"yrid":12,"defaultprice":680,"remainnum":0}] */ obj.GetRouteYDate = function (dateprice) { var hash = []; for (var i = 0; i < dateprice.length; i++) { if (hash.indexOf(dateprice[i].ydate) == -1) { hash.push(dateprice[i].ydate); } } var ydateprice = []; for (var i = 0; i < hash.length; i++) { var query = dateprice.filter(function (e) { return e.ydate == hash[i]; }); var sortquery = query.sort(function (a, b) { return a.price - b.price; }); var defaultprice = 0; for (var s = 0; s < sortquery.length; s++) { if (sortquery[s].price > 0) { defaultprice = sortquery[s].price; break; } } ydateprice.push({ "ydate": hash[i], "defaultprice": defaultprice, "state": 0 }); } return ydateprice; }; /* * 设置团期状态 * @param {json} dateprice 团期价格 * @param {string} ydate 团期 * return {json} [{"ydate":"2021-04-15 00:00:00","defaultprice":680,"state":0}] * */ obj.SetState = function (dateprice, ydate) { if (dateprice.length == 0) { return dateprice; } if (ydate == '') { dateprice[0].state = 1; obj.config.ydate = dateprice[0].ydate.split(' ')[0]; return dateprice } var date = new Date(ydate.split(' ')[0].replace(/-/g, "/")); var hs = false; for (var i = 0; i < dateprice.length; i++) { var temp = new Date(dateprice[i].ydate.split(' ')[0].replace(/-/g, "/")); if (temp.getTime() == date.getTime()) { hs = true; dateprice[i].state = 1; obj.config.ydate = dateprice[i].ydate.split(' ')[0]; break; } } if (!hs) { for (var i = 0; i < dateprice.length; i++) { var con = new Date(dateprice[i].ydate.split(' ')[0].replace(/-/g, "/")); var front = con; var back = con; if (i - 1 >= 0) { front = new Date(dateprice[i - 1].ydate.split(' ')[0].replace(/-/g, "/")); } if (i + 1 < dateprice.length) { back = new Date(dateprice[i + 1].ydate.split(' ')[0].replace(/-/g, "/")); } if (date.getTime() == con.getTime()) { dateprice[i].state = 1; obj.config.ydate = dateprice[i].ydate.split(' ')[0]; hs = true; break; } else if (date.getTime() >= front.getTime() && date.getTime() <= back.getTime()) { dateprice[i].state = 1; obj.config.ydate = dateprice[i].ydate.split(' ')[0]; hs = true; break; } else if (date.getTime() < front.getTime()) { dateprice[i].state = 1; obj.config.ydate = dateprice[i].ydate.split(' ')[0]; hs = true; break; } } } if (!hs && dateprice.length > 0) { dateprice[0].state = 1; obj.config.ydate = dateprice[0].ydate.split(' ')[0]; } return dateprice; }; /* * 航线查询(开始港口+抵达港口+团期) * * */ obj.ListRoute = function () { var startYPID = obj.config.start_ypid; var endYPID = obj.config.end_ypid; var yDate = obj.config.ydate; var orderby = ''; if (arguments.length >= 1) { orderby = arguments[0]; } var ypids = startYPID + ',' + endYPID; var url = "/sanxia/r" + startYPID + "-" + endYPID + ".html?a=listjson&ydate=" + yDate + "&orderby=" + orderby + "&" + Math.random(); $.getJSON(url, function (data) { obj.ShowRoute(data); }); }; /* * 显示航线列表 * @param {json} data 航线列表 * */ obj.ShowRoute = function (data) { var htmlStr = ""; for (var i = 0; i < data.length; i++) { var item = data[i]; var url = "/sanxia/s" + item.yachtid + ".html?routeid=" + item.routeid + "&ydate=" + obj.config.ydate; htmlStr += '
'; htmlStr += '
'; htmlStr += '
' + item.yachtname + '
'; if (item.starid != 4) { htmlStr += '' + item.starname + ''; } htmlStr += '
'; htmlStr += '
'; htmlStr += '
' + item.starttime2 + '' + item.startypname + '
'; htmlStr += '
' + item.dayandnight + '
' + (item.roundtrip ? '往 返' : '单 程') + '
'; htmlStr += '
' + item.endtime2 + '
' + item.arrivedate + '抵达
' + item.endypname + '
'; htmlStr += '
'; htmlStr += '
预定
'; htmlStr += '
'; if (item.defaultprice > 0) { htmlStr += '¥' + item.defaultprice + '起'; } else { htmlStr += '请电询'; } htmlStr += '
'; htmlStr += '
'; } $("#hxlist").html(htmlStr); }; /* * 前一天 * */ obj.UpDay = function () { var yDate = obj.config.ydate; var date = new Date(yDate.replace(/-/g, "/")); date.setDate(date.getDate() - 1); var date_str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); obj.config.ydate = date_str; obj.ListRoute(); }; /* * 后一天 * */ obj.DownDay = function () { var yDate = obj.config.ydate; var date = new Date(yDate.replace(/-/g, "/")); date.setDate(date.getDate() + 1); var date_str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); obj.config.ydate = date_str; obj.ListRoute(); }; /* * 显示日期 * */ obj.ShowDate = function () { var yDate = obj.config.ydate; var date = new Date(yDate.replace(/-/g, "/")); $(".ydate").html((date.getMonth() + 1) + "月" + date.getDate() + "日" + " " + obj.DayOfWeek(date.getDay())); }; /*-------获取航线港口--------------*/ obj.GetRoutePort = function () { if (obj.RoutePortDataJson.length > 0) { /*显示港口*/ obj.ShowPortHtml(obj.RoutePortDataJson, obj.OneLevelPortDataJson); return; } var url = "/api/sanxia?method=routeport&" + Math.random(); $.getJSON(url, function (rdata) { obj.RoutePortDataJson = rdata.data.port; obj.OneLevelPortDataJson = rdata.data.onelevelport; /*显示港口*/ obj.ShowPortHtml(rdata.data.port, rdata.data.onelevelport); }); }; /*显示选择航线港口Html*/ obj.ShowPortHtml = function (data, onelevelport) { var one_hash = []; for (var i = 0; i < onelevelport.length; i++) { for (var j = 0; j < data.length; j++) { if (onelevelport[i].ypid == data[j].startypid || onelevelport[i].ypid == data[j].topypid) { one_hash.push(onelevelport[i]); break; } } } var nva_html = '
登船地
'; var con_html = ''; for (var i = 0; i < one_hash.length; i++) { var query = data.filter(function (e) { return (e.topypid == one_hash[i].ypid || e.startypid == one_hash[i].ypid); }); if (query.length == 0) { continue; } /*导航*/ var cls = ''; if (obj.config.onportid == one_hash[i].ypid || (obj.config.onportid == '' && i == 0)) { cls = 'on'; obj.config.onportid = one_hash[i].ypid; } nva_html += '
' + one_hash[i].ypname + '
'; /*内容*/ con_html += '
'; for (var j = 0; j < query.length; j++) { var itemjson = JSON.stringify(query[j]).replace(/"/g, "'"); var on_cls = ''; if (obj.config.start_ypid == query[j].startypid && obj.config.end_ypid == query[j].endypid && obj.config.roundtrip == query[j].roundtrip) { on_cls = 'on'; } con_html += ''; } con_html += '
'; } nva_html += '
'; $("#Port").html('' + nva_html + con_html); $("#Port .csm").hover(function () { var index = $(this).index(); if (index > -1) { obj.config.onportid = $(this).attr("ypid"); $("#Port .csm").removeClass("on"); $(this).addClass("on"); $("#Port .nhx").hide(); $("#Port .nhx").eq(index - 1).show(); } }); }; /*选择港口*/ obj.SelectPort = function (btn, port) { var isquery = false; if (obj.config.start_ypid != port.startypid || obj.config.end_ypid != port.endypid || obj.config.roundtrip != port.roundtrip) { isquery = true; } obj.config.start_ypid = port.startypid; obj.config.start_ypname = port.startypname; obj.config.end_ypid = port.endypid; obj.config.end_ypname = port.endypname; obj.config.roundtrip = port.roundtrip; /*设置筛选提示*/ obj.ShowTips(); var html_str = obj.config.start_ypname + '' + (obj.config.roundtrip ? '' : '') + '' + obj.config.end_ypname; $(".hxsx .selectport").html(html_str); $("#Port").hide(); if (isquery && !obj.config.openurl) { /*查询航线*/ obj.ListRoute(); /*查询航线团期*/ obj.ListRouteYDate(); } if (isquery && obj.config.openurl) { /*直接打开Url*/ var url2 = "/sanxia/r" + obj.config.start_ypid + "-" + obj.config.end_ypid + ".html" + (obj.config.roundtrip ? '?roundtrip=1' : ''); window.location.href = url2; } }; /*打开选择港口*/ obj.OpenPort = function () { /*获取航线港口*/ obj.GetRoutePort(); $("#Port").show(); }; /*关闭选择港口*/ obj.ClosePort = function () { $("#Port").hide(); }; /*切换港口*/ obj.SwitchPort = function () { var s_ypid = obj.config.start_ypid; var s_name = obj.config.start_ypname; obj.config.start_ypid = obj.config.end_ypid; obj.config.end_ypid = s_ypid; obj.config.start_ypname = obj.config.end_ypname; obj.config.end_ypname = s_name; /*查询航线*/ obj.ListRoute(); /*查询航线团期*/ obj.ListRouteYDate(); }; /*查询选中日期*/ obj.ShowDate = function (selectedDate) { if (selectedDate) { var date = new Date(selectedDate.replace(/-/g, "/")); var str = date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日 ' + MyCalendar.DayOfWeek(date.getDay()); $("#Select_YDate h2").html(str); $("#Select_YDate").attr("date", selectedDate); var pastdate = obj.config.ydate; obj.config.ydate = selectedDate; if (pastdate != selectedDate) { //查询航线 yachtRoute.ListRoute(); } $(".rl_wrap .slide").removeClass("on"); if ($(".date" + selectedDate)) { $(".date" + selectedDate).addClass("on"); //滑块定位 if (slide) { slide.DingWei(); } } } }; /*显示筛选条件*/ obj.ShowTips = function () { var html_str = obj.config.start_ypname + '到' + obj.config.end_ypname + '游轮票价如下:'; $(".start_end_port").html(html_str); }; /* * 一周中的某一天 * @param {string} day 一周的第几天 * */ obj.DayOfWeek = function (day) { switch (day) { case 0: return "星期天"; case 1: return "星期一"; case 2: return "星期二"; case 3: return "星期三"; case 4: return "星期四"; case 5: return "星期五"; case 6: return "星期六"; } }; }; var yachtRoute = new YachtRoute();