/* * 三峡游轮航线(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 += '
'; 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();