You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

299 lines
10 KiB
JavaScript

$(function(){
var clisn = $('#CLI_NO').val() || '';
if(clisn.length<3){
return;
}
clisn = clisn.toLowerCase();
$.ajax({
url:'/forms/tourprice.asp?url=/chapi/getallprice/' + clisn,
type:'GET',
success:function(str){
//console.log(str);
if(typeof str != 'object'){
return;
}
if(str.length==0){
return;
}
if(str.length == 1){
$('input[name="TourClass"]').eq(0).attr('checked',true);
}
for(var key in str){
starlevel(str[key].starlevel);
}
$('input[name="TourClass"]').each(function(index, el) {
if(!$(this).hasClass('hasprice')){
$(this).parent('label').hide();
}
});
$("#Starting_Date").datepicker({
showAnim:"fadeIn",
duration:0,
minDate: 2,
maxDate:"2y",
numberOfMonths: 2,
showButtonPanel: true,
onSelect: function(dateText, inst) {
calcprice(str);
}
});
$('.chgprice').change(function() {
calcprice(str);
});
$('input[name="TourClass"]').click(function(event) {
calcprice(str);
});
}
});
});
function calcprice(obj){
//console.log('d');
//判断是否区分星级
var starlevel_int = 0;
if(obj.length == 1){
var is_starprice = false;
$('input[name="TourClass"]').eq(0).attr('checked',true);
}else{
var is_starprice = true;
if(typeof $('input[name="TourClass"]') != 'undefined'){
if(!$('input[name="TourClass"]').is(":checked")){
var starlevel_val = $('input[name="TourClass"]').eq(0).val();
$('input[name="TourClass"]').eq(0).attr('checked',true);
}else{
var starlevel_val = $('input[name="TourClass"]:checked').val();
}
switch (starlevel_val.toLowerCase()){
case 'deluxe':
starlevel_int = 5;
break;
case 'superior':
starlevel_int = 4;
break;
case 'economy':
starlevel_int = 3;
break;
default:
starlevel_int = -1;
}
}
}
//
var pricobj = false;
for(var key in obj) {
if(is_starprice){
if(obj[key].starlevel == starlevel_int){
// 取得该等级的价格
pricobj = obj[key];
break;
}
}else{
pricobj = obj[key];
}
}
if(pricobj !== false){
var hl_usd2rmb = pricobj.hl;
var childoff = 1;
var child_price_cardinal_number = 0;
$('#TravelAdvisor').val(pricobj.TravelAdvisor);
if(typeof pricobj.childprice != 'undefined'){
childoff = pricobj.childprice
}
if(typeof pricobj.child_price_cardinal_number != 'undefined'){
child_price_cardinal_number = pricobj.child_price_cardinal_number;
}
var sdate = $('#Starting_Date').val() || moment().add(3, 'day').format('YYYY-MM-DD');
sdate = new Date(sdate);
if(moment(sdate).isValid()){
var sdate = parseInt(moment(sdate).format('YYYYMMDD'));
var sAdult = $('#AdultsNumber').val();
if(isNaN(parseInt(sAdult))){
sAdult = 1;
$('#AdultsNumber').children('option').eq(0).attr('selected',true);
}
if(sAdult>1000){
sAdult = 1000;
}
var sChild = $('#ChildNum').val();
if(isNaN(parseInt(sChild))){
sChild = 0;
}
var sBaby = $('#BabyNum').val()|0;
if(isNaN(parseInt(sBaby))){
sBaby = 0;
}
var totalPeople = parseInt(sAdult) + parseInt(sChild);
//处理单间房差
var roomDifference = 0;
var hRoomDiff = 0;
var nRoomDiff = 0;
//节假日价格
var hpricearr = new Array();
if(typeof pricobj.holidays != 'undefined'){
for(var key in pricobj.holidays){
var h_start = parseInt(moment(pricobj.holidays[key].start).format('YYYYMMDD'));
var h_end = parseInt(moment(pricobj.holidays[key].end).format('YYYYMMDD'));
if(h_start <= sdate && h_end >= sdate){
hpricearr = pricobj.holidays[key].pricerule;
if(pricobj.holidays[key].roomDifference != undefined){
hRoomDiff = pricobj.holidays[key].roomDifference;
}else{
hRoomDiff=0;
}
}
}
}
//非节假日价格
var npricearr = new Array();
if(hpricearr.length<1){
if(typeof pricobj.normal != 'undefined'){
for(var pnkey in pricobj.normal){
//console.log(pricobj.normal[pnkey]);
var h_start = parseInt(moment(pricobj.normal[pnkey].start).format('YYYYMMDD'));
var h_end = parseInt(moment(pricobj.normal[pnkey].end).format('YYYYMMDD'));
if(h_start <= sdate && h_end >= sdate){
//console.log('ee');
npricearr = pricobj.normal[pnkey].pricerule;
if(pricobj.normal[pnkey].roomDifference != undefined){
nRoomDiff = pricobj.normal[pnkey].roomDifference;
}else{
nRoomDiff = 0;
}
break;
}
}
}
}
//单间房差
if(totalPeople%2 !== 0){
roomDifference = (hRoomDiff>0)?hRoomDiff:nRoomDiff;
}
if(hpricearr.length<1 && npricearr.length<1){
return false;
}else{
pricearr = hpricearr.length < 1 ? npricearr : hpricearr;
}
//最大人数 - lmr 去除
//var max_number = 0;
//for(var pkey in pricearr) {
// if (pricearr[pkey].max > max_number) {
// max_number = pricearr[pkey].max;
// }
//}
//if (sAdult > max_number) sAdult
var price = 0;
//获取单个人的价格
//console.log(pricearr);
for(var pkey in pricearr){
if(pricearr[pkey].min <= sAdult && sAdult <= pricearr[pkey].max){
//判断周末价格
var weeknum = moment(sdate,'YYYYMMDD').day();
if(weeknum == 0){
weeknum == 7;
}
if(typeof pricearr[pkey].weekendprice != 'undefined' && pricearr[pkey].weekendprice > 0){
if(typeof pricearr[pkey].weekendnum == 'undefined'){
var weekendnum = '6,7';
}else{
var weekendnum = pricearr[pkey].weekendnum;
}
if(weekendnum.indexOf(weeknum.toString())>-1){
pricermb = pricearr[pkey].weekendprice;
}else{
pricermb = pricearr[pkey].price;
}
}else{
pricermb = pricearr[pkey].price;
}
if(typeof pricermb == "object"){
price = Math.round( pricermb.adult / hl_usd2rmb );
}else{
price = Math.round( pricermb / hl_usd2rmb );
}
break;
}
}
var childprice = 0;
for(var pkey in pricearr){
if(pricearr[pkey].min <= sChild && sChild <= pricearr[pkey].max) {
pricermb = pricearr[pkey].price;
if (sChild > 0) {
if(pricermb.child == undefined){
childprice = Math.round(price * childoff) - Math.round(child_price_cardinal_number / hl_usd2rmb);
}else{
childprice = Math.round( pricermb.child / hl_usd2rmb );
}
}
}
}
var babyprice = 0;
for(var pkey in pricearr){
if(pricearr[pkey].min <= sBaby && sBaby <= pricearr[pkey].max) {
pricermb = pricearr[pkey].price;
if (sBaby > 0) {
if(pricermb.baby !== undefined){
babyprice = Math.round( pricermb.baby / hl_usd2rmb );
}
}
}
}
var totalprice = sAdult * price + sChild * childprice + babyprice * sBaby + roomDifference;
$('#sAdultnum').text(sAdult);
$('#adultprice').text(price);
$('#TourPrice').val(price);
sChild = sChild == 0 ? '' : sChild;
$('#sChildnum').text(sChild);
$('#childprice').text(childprice);
sBaby = sBaby == 0 ? '' : sBaby;
$('#sBabynum').text(sBaby);
$('#babyprice').text(babyprice);
$('#totlaprice').text(totalprice); //
$('#TotalPrice').val(totalprice); //hidden
}
}else{
return false;
}
}
function starlevel(star){
var _tmp = '';
switch (star){
case 5:
_tmp = 'deluxe';
break;
case 4:
_tmp = 'superior';
break;
case 3:
_tmp = 'economy';
break;
}
$('input[name="TourClass"]').each(function(index, el) {
if($(this).val().toLowerCase() == _tmp){
$(this).addClass('hasprice');
}
});
}