/*
* 三峡游船航线(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();