/*
* 三峡游轮航线(PC端)
* 2021-11-12
*/
function YachtShow() {
var obj = this;
/*团期价格*/
obj.PriceDataJson = [];
obj.config = {
yachtID: '',
routeID: '',
ydate: ''
};
/*
* 航线团期
* @param {string} yachtID 游船ID
* @param {string} routeID 航线ID
* @param {string} month 月份
* @param {string} ypids 港口(1,2)
* @param {string} baseRoom 基本房型
* @param {string} baseNationality 基本国籍
* @param {string} computePrice 计算起始价格
* @param {fun} callback 回调函数
* return {json}
* */
obj.ListDataPrice = function (yachtID, routeID) {
var month = "",
ypids = "", //港口IDs(1,2)
baseRoom = "",
baseNationality = "",
computePrice = "";
if (arguments.length >= 3) {
month = arguments[2];
}
if (arguments.length >= 4) {
ypids = arguments[3];
}
if (arguments.length >= 5) {
baseRoom = arguments[4];
}
if (arguments.length >= 6) {
baseNationality = arguments[5];
}
if (arguments.length >= 7) {
computePrice = arguments[6];
}
var callback = function () { };
if (arguments.length >= 8) {
callback = arguments[7];
}
var url = "/sanxia/r" + routeID + ".html?a=simpledateprice&yachtID=" + yachtID + "&routeID=" + routeID + "&month=" + month + "&ypids=" + ypids + "&baseRoom=" + baseRoom + "&baseNationality=" + baseNationality + "&computePrice=" + computePrice + "&" + Math.random();
$.getJSON(url, function (data) {
obj.PriceDataJson = data;
callback(data);
});
};
/*
* 显示团期
* @param {json} dateprice 团期价格
* */
obj.ShowYDate = function (dateprice) {
if (obj.config.ydate == '' && dateprice.length > 0) {
obj.config.ydate = dateprice[0].ydate.split(' ')[0];
}
//显示团期价格Html
var jsonArray = obj.SetState(obj.GetYDate(dateprice), obj.config.ydate);
var ydateStr = "";
for (var i = 0; i < jsonArray.length; i++) {
var date = new Date(jsonArray[i].ydate.split(' ')[0].replace(/-/g, "/"));
var datestr = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
var remainnum_str = '';
if (jsonArray[i].remainnum == 0) {
remainnum_str = '
';
} else if (jsonArray[i].remainnum == -200) {
remainnum_str = '';
}
ydateStr += '' + (date.getMonth() + 1) + '月' + date.getDate() + '日 ' + obj.DayOfWeek(date.getDay()) + '
¥' + jsonArray[i].defaultprice + '' + remainnum_str + '
';
}
$("#YDate .date").html(ydateStr);
//显示房型价格
obj.SelectYDate(obj.config.ydate);
//滑动定位
if (slide2) {
slide2.DingWei();
}
};
/*
* 选择航线
* @param {string} routeid 航线ID
* @param {obj} btnobj 点击元素
* */
obj.SelectRoute = function (routeid, btnobj) {
$("#Route .hxk_wrap .hxk").removeClass("on");
$("#Route .hxk_wrap .routeid" + routeid).addClass("on");
//获取和显示行程信息
obj.GetTravel(routeid);
//获取和显示费用信息
obj.GetRouteCost(routeid);
//重新加载团期
obj.config.routeID = routeid;
obj.ListDataPrice(obj.config.yachtID, obj.config.routeID, "", "", "", "1", "1", obj.ShowYDate);
};
/*
* 选择团期
* @param {string} ydate 团期yyyy-M-d
* */
obj.SelectYDate = function (ydate) {
if (ydate == '') {
return;
}
$("#YDate .date .hxk").removeClass("on");
$("#YDate .date .date" + ydate).addClass("on");
obj.config.ydate = ydate;
//获取房型的价格
var jsonArray = obj.GetRoomPrice(obj.PriceDataJson, ydate);
$("#Room .room").hide();
for (var i = 0; i < jsonArray.length; i++) {
var $room = $("#Room .yrid" + jsonArray[i].yrid);
if (!$room) {
continue;
}
//价格为0的房型隐藏
if (parseInt(jsonArray[i].defaultprice) == 0) {
$room.hide();
} else {
$room.show();
}
//设置房型价格
$room.find(".defaultprice").html(jsonArray[i].defaultprice);
if (jsonArray[i].remainnum == 0) {
$room.find(".seoff").show();
} else {
$room.find(".seoff").hide();
}
}
};
/*
* 选择房型(开始预订)
* @param {string} yrid 房型ID
* @param {obj} btnobj 点击元素
* */
obj.SelectRoom = function (yrid, btnobj) {
obj.config.yrid = yrid;
$(btnobj).find(".liwrap").addClass("on");
//预订
obj.Order();
};
/*
* 获取团期和起始价格
* @param {json} dateprice 团期价格
* return {json} [{"ydate":"2021-04-15 00:00:00","defaultprice":680,"state":0}]
* */
obj.GetYDate = 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 remainnum = 0;
for (var r = 0; r < query.length; r++) {
remainnum = query[r].remainnum; break;
}
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;
}
}
var recommend = false;
for (var s = 0; s < sortquery.length; s++) {
if (sortquery[s].recommend) {
recommend = true;
}
}
ydateprice.push({
"ydate": hash[i],
"defaultprice": defaultprice,
"state": 0,
"remainnum": remainnum,
"recommend": recommend
});
}
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;
};
/*
* 获取房型起始价格
* @param {json} dateprice 团期价格
* @param {string} ydate 团期yyyy-M-d
* return {json} [{"yrid":12,"defaultprice":680,"remainnum":0}]
* */
obj.GetRoomPrice = function (dateprice, ydate) {
var hash = [];
for (var i = 0; i < dateprice.length; i++) {
if (hash.indexOf(dateprice[i].yrid) == -1) {
hash.push(dateprice[i].yrid);
}
}
var roomprice = [];
for (var i = 0; i < hash.length; i++) {
var query = dateprice.filter(function (e) {
return (e.yrid == hash[i] && e.ydate.split(' ')[0] == ydate.split(' ')[0]);
});
var sortquery = query.sort(function (a, b) {
return a.price - b.price;
});
var remainnum = 0;
for (var s = 0; s < sortquery.length; s++) {
remainnum += sortquery[s].remainnum;
}
var defaultprice = 0;
for (var s = 0; s < sortquery.length; s++) {
if (sortquery[s].price > 0) {
defaultprice = sortquery[s].price;
break;
}
}
roomprice.push({
"yrid": hash[i],
"defaultprice": defaultprice,
"remainnum": remainnum
});
}
return roomprice;
};
/*
* 获取航线行程
* @param {string} routeID 航线ID
*/
obj.GetTravel = function (routeID) {
var url = '/sanxia/r' + routeID + '.html?a=travel&' + Math.random();
$.getJSON(url, function (data) {
obj.ShowTravel(data);
});
};
/*
* 获取航线费用
* @param {string} routeID 航线ID
*/
obj.GetRouteCost = function (routeID) {
var url = '/sanxia/r' + routeID + '.html?a=routeinfo&' + Math.random();
$.getJSON(url, function (data) {
obj.ShowRouteCost(data);
});
};
/*
* 显示航线行程
* @param {json} date 团期价格
*/
obj.ShowTravel = function (data) {
var htmlStr = '';
htmlStr += '
';
for (var i = 0; i < data.length; i++) {
htmlStr += '第' + data[i].dayno + '天
';
}
htmlStr += '
';
htmlStr += '';
for (var i = 0; i < data.length; i++) {
htmlStr += '- ';
htmlStr += '
';
htmlStr += '
D' + data[i].dayno + '
';
htmlStr += data[i].doing;
htmlStr += '
';
htmlStr += '用餐:' + data[i].dinner + '
';
htmlStr += ' ';
}
htmlStr += '
';
$("#RouteTravel").html(htmlStr);
dayTab = new FTab().Start($("#minnavTwo").find("li"), $("._contentItemTwo"), 40, $("#minnavTwo"));
};
/*
* 显示航线费用
* @param {json} date 团期价格
*/
obj.ShowRouteCost = function (data) {
var htmlStr = "";
if (data[0].include != null && data[0].include != '') {
htmlStr += '费用包含
';
//htmlStr += '' + data[0].include.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].include + '
';
}
if (data[0].noinclude != null && data[0].noinclude != '') {
htmlStr += '费用不含
';
//htmlStr += '' + data[0].noinclude.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].noinclude + '
';
}
if (data[0].additional != null && data[0].additional != '') {
htmlStr += '自愿参加项目
';
//htmlStr += '' + data[0].additional.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].additional + '
';
}
if (data[0].shopping != null && data[0].shopping != '') {
htmlStr += '自愿购物活动
';
//htmlStr += '' + data[0].shopping.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].shopping + '
';
}
if (data[0].note != null && data[0].note != '') {
htmlStr += '注意事项
';
//htmlStr += '' + data[0].note.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].note + '
';
}
if (data[0].rules != null && data[0].rules != '') {
htmlStr += '退改规则
';
//htmlStr += '' + data[0].rules.replace(/\r/g, "
") + '
';
htmlStr += '' + data[0].rules + '
';
}
$("#RouteCost").html(htmlStr);
};
/*
* 游船预订
* */
obj.Order = function () {
var reg = /^\d+$/;
if (!reg.test(obj.config.yachtID)) {
alert("请选择游船。");
return;
}
if (!reg.test(obj.config.routeID)) {
alert("请选择航线。");
return;
}
if (obj.config.ydate == '') {
alert("请选择发团日期。");
return;
}
if (!reg.test(obj.config.yrid)) {
alert("请选择房型。");
return;
}
var url = "/yuding/10_" + obj.config.yachtID + "?";
if (obj.config.ydate != '') {
url += "&StartOff=" + obj.config.ydate;
}
if (obj.config.routeID != '') {
url += "&routeid=" + obj.config.routeID;
}
if (obj.config.yrid != '') {
url += "&yrid=" + obj.config.yrid;
}
url = url.replace('?&', '?');
location.href = url;
};
/*显示房间详情*/
obj.OpenRoomDetail = function (roomid) {
$('.roominfo' + roomid).show();
obj.SwitchPic(roomid); /*选择本房间第一个卡片,有视频就播放*/
$('html').css('overflow', 'hidden');
};
/*关闭房间详情*/
obj.CloseRoomDetail = function (roomid) {
$('.roominfo' + roomid).hide();
$('html').css('overflow', 'auto');
window.event.cancelBubble = true;
obj.SwitchPic(); /*暂停所有视频*/
};
/* 选择房型图片或视频 */
obj.SwitchPic = function (roomid, btnobj) {
$("video").each(function () { $(this).get(0).pause(); }); /*暂停所有视频*/
if (roomid) {
var $roominfo = $('.roominfo' + roomid);
$roominfo.find(".dpic .picdiv").hide();
var index = btnobj ? $(btnobj).index() : 0;
var $thisdiv = $roominfo.find(".dpic .picdiv").eq(index);
$thisdiv.show();
$thisdiv.find("video").each(function () { $(this).get(0).play(); });
var $a = $roominfo.find(".picxz a");
$a.removeClass("on");
$a.eq(index).addClass("on");
}
};
/*
* 一周中的某一天
* @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 yachtshow = new YachtShow();