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
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');
|
|
}
|
|
});
|
|
} |