Vietnam Time (GMT+7): Mon, 02 Nov 2026, 18:44
Home
Visa Services
e-Visa
Pricing
FAQ
News
About Us
WA:
+86 150 0212 6600
🌐
International Site
Login / Register
Member Login
✕
Password Login
Code Login
Email
Password
Register Now
Forgot password?
Sign In
Email
Email Code
Get Code
Register Now
Forgot password?
Sign In
Full Name
Email
Email Code
Get Code
Phone (optional)
Password (min 8 chars)
Confirm Password
Sign Up
Email
Email Code
Get Code
New Password (min 8 chars)
Confirm New Password
Reset Password
WeChat / SMS code login coming soon
+86 150 0212 6600
+86 150 0212 6600
Home
Visa Services
e-Visa
Visa on Arrival
Airport Services
Pricing
FAQ
News
About Us
Member Login
Welcome back
Password Login
Code Login
Email
*
Password
*
Register Now
Forgot password?
Email
*
Email Code
*
Register Now
Forgot password?
WeChat / SMS code login coming soon
Member Register
Create Account
Full Name
*
Email
*
Email Code
*
Phone
+86
Password
*
at least 8 characters
Confirm Password
*
Already have an account? Sign in
Forgot Password
Reset Password
Please enter your registered email, to reset your password via the email code.
Email
*
Email Code
*
New Password
*
Confirm New Password
*
1
Service Type ✓
2
Your Info
3
Payment
4
Confirm
Visa Application
Visa Type
e-Visa
Visa on Arrival (Sticker)
Travelers
*
--Select--
1
2
3
4
5
6
7
8
9
10
Visa Duration
*
Purpose of Entry
*
Tourism
Business
Entry Date
*
Exit Date
*
Entry Port
*
--Select--
Noi Bai Airport (HAN) - Hanoi
Tan Son Nhat Airport (SGN) - Ho Chi Minh City
Cam Ranh Airport (CXR) - Khanh Hoa (Nha Trang)
Da Nang Airport (DAD) - Da Nang
Cat Bi Airport (HPH) - Hai Phong
Can Tho Airport (VCA) - Can Tho
Phu Quoc Airport (PQC) - Kien Giang (Phu Quoc Island)
Phu Bai Airport (HUI) - Hue
Van Don Airport (VDO) - Quang Ninh
Lien Khuong Airport (DLI) - Lam Dong (Da Lat)
Dong Hoi Airport (TBB) - Quang Binh
Phu Cat Airport (UIH) - Binh Dinh
Tho Xuan Airport (THD) - Thanh Hoa
Tay Trang International Border Gate - Dien Bien
Mong Cai International Border Gate - Quang Ninh
Nha Trang Port - Khanh Hoa
Quy Nhon Port - Binh Dinh
Dung Quat Port - Quang Ngai
Vung Tau Port - Ba Ria-Vung Tau
Ho Chi Minh City Port - Ho Chi Minh City
Huu Nghi International Border Gate - Lang Son
Lao Cai International Border Gate - Lao Cai
Na Meo International Border Gate - Thanh Hoa
Nam Can International Border Gate - Nghe An
Cau Treo International Border Gate - Ha Tinh
Cha Lo International Border Gate - Quang Binh
La Lay International Border Gate - Quang Tri
Lao Bao International Border Gate - Quang Tri
Bo Y International Border Gate - Kon Tum
Moc Bai International Border Gate - Tay Ninh
Xa Mat International Border Gate - Tay Ninh
Tinh Bien International Border Gate - An Giang
Vinh Xuong International Border Gate - An Giang
Ha Tien International Border Gate - Kien Giang
Hon Gai Port - Quang Ninh
Cam Pha Port - Quang Ninh
Hai Phong Port - Hai Phong
Nghi Son Port - Thanh Hoa
Vung Ang Port - Ha Tinh
Chan May Port - Thua Thien Hue
Da Nang Port - Da Nang
Vinh International Airport (VII) - Nghe An
Chu Lai International Airport (VCL) - Quang Ngai
Duong Dong Port - Kien Giang (Phu Quoc Island)
Dong Dang International Border Gate (Railway) - Lang Son
Lao Cai International Border Gate (Railway) - Lao Cai
Tra Linh International Border Gate - Cao Bang
Lon Sap International Border Gate - Son La
Nam Giang International Border Gate - Da Nang
Le Thanh International Border Gate - Gia Lai
Binh Hiep International Border Gate - Tay Ninh
Thuong Phuoc International Border Gate (Land and Waterway) - Dong Thap
Dinh Ba International Border Gate - Dong Thap
Tan Nam International Border Gate - Tay Ninh
Thanh Thuy International Border Gate - Tuyen Quang
Van Gia Port - Quang Ninh
Dien Dien Port - Hung Yen
Hai Thinh Port - Ninh Binh
Ninh Binh Port - Ninh Binh
Cua Lo - Ben Thuy Port - Nghe An
Son Duong Port - Ha Tinh
Gianh Port - Quang Tri
Hon La Port - Quang Tri
Cua Viet Port - Quang Tri
Thuan An Port - Thua Thien Hue
Ky Ha Port - Da Nang
Sa Ky Port - Quang Ngai
Vung Ro Port - Phu Yen
Ca Na Port - Khanh Hoa
Ninh Chu Port - Khanh Hoa
Phu Quy Port - Binh Thuan
Lien Huong Port - Binh Thuan
Ben Luc Port - Long An
Dong Thap Port - Dong Thap
Soai Rap - Hiep Phuoc Port - Ho Chi Minh City
My Thoi Port - An Giang
Hon Chong Port - An Giang
An Thoi Port - An Giang
Truong Long Hoa Port - Vinh Long
Giao Long Port - Vinh Long
Nam Can Port - Ca Mau
Inviting Company Name
*
Inviting Company Address
*
Inviting Company Phone
*
Processing Time
*
Arrival Time
*
Flight
*
Type
*
--Select--
Holiday Notice (business days exclude weekends and public holidays)
· e-Visa: calculated according to
Vietnam's public holidays
for business days.
· Sticker visa: calculated according to
the closed days of the Chinese consulate
for business days.
Vietnam holidays:
Chinese consulate holidays:
Order Details
e-Visa:
Total:
0
Total:
0
Purpose of Entry:
Tourism
Visa Duration:
eVisa - 1-Month Single Entry
Entry Date:
Exit Date:
Entry Port:
Travelers:
Service Fee:
0
USD
Express fee:
0
USD
function getEntryPoint(type,visa_type){ http("/send.php",'post',{act:'getEntryPoint',type:type,visa_type:visa_type},function (d){ if(d.code==200){ if(type==1){ var hoption=['
--Select--
']; $.each(d.data.rows,function (i,v){ hoption.push('
'+((window.VNPORTMAP&&window.VNPORTMAP[v.title])||v.title)+'
') }); $("select[name='voa-arrival-port']").empty().append(hoption.join('')); $("select[name='voa-arrival-port']").trigger("chosen:updated"); } } },'json'); } $("input[name='visa_type']").change(function (){ var visa_type=$(this).val(); console.log(visa_type); if(visa_type=='elec'){ $('.visa-type-title').text('e-Visa: '); $('#voa-purpose').empty().append('
Tourism
Business
'); getEntryPoint(1,'elec'); $('.enterport').show(); }else if(visa_type=='signaturepaper'){ $('#voa-purpose').empty().append('
Tourism
'); $('.visa-type-title').text(' :'); getEntryPoint(1,'signaturepaper'); $('.enterport').hide(); }else{ $('.visa-type-title').text('Visa on Arrival(VOA) :'); $('#voa-purpose').empty().append('
Tourism
'); getEntryPoint(1,'fallground'); $('.enterport').show(); } $(".inputbox-e").hide(); $('.rv-voa-purpose').text($("select[name='voa-purpose']").val()); getVisaDeadline(); getPriceByEnterDate(); }) $("select[name='voa-purpose']").change(function (){ $('.rv-voa-purpose').text($(this).val()); var visa_type=$("input[name='visa_type']:checked").val(); if(visa_type=='signaturepaper'){ //重新渲染 var voa_purpose=$(this).val(); var prefix=''; if(voa_purpose=='Tourism'){ $("select[name='visa_deadline']").empty().append('' + '
'+prefix+'15-Day Single
' + '
'+prefix+'30-Day Single
' + '
'+prefix+'30-Day Multiple
' + ''); $('.rv-voa-length').text(prefix+'15-Day Single'); }else{ $("select[name='visa_deadline']").empty().append('' + '
'+prefix+'15-Day Single
' + '
'+prefix+'30-Day Single
' + '
'+prefix+'30-Day Multiple
' + ''); $('.rv-voa-length').text(prefix+'15-Day Single'); } getPriceByEnterDate(); getPrice(visa_type); } if($(this).val()=='Business'&&visa_type=='elec'){ $(".inputbox-e").show(); }else{ $(".inputbox-e").hide(); } }) $("select[name='customers_number']").change(function (){ if($(this).val()==""){ $('.rv-evisa-no-applicant').text(''); $('.evisa-applicants-numbers').text(''); }else{ $('.rv-evisa-no-applicant').text($(this).val()); $('.evisa-applicants-numbers').text($(this).val()+" x "); if($('.rv-evisa-processing-fee').text()=='0'){ $('.rv-evisa-processing-fee').siblings('span').text(''); } } var visa_type=$("input[name='visa_type']:checked").val(); getPriceByEnterDate(); getPrice(visa_type); getPassengerPrice(); }) $("select[name='visa_deadline']").change(function (){ getPriceByEnterDate(); updateExitMax($("input[name='enterDate']").val()); checkTravelDays(); }) var visa_type=$("input[name='visa_type']:checked").val(); getPrice(visa_type); function getPrice(visa_type){ var visa_deadline=$("select[name='visa_deadline']").val(), voa_purpose=$("select[name='voa-purpose']").val(), customers_number=$("select[name='customers_number']").val(), processing_costs=$("input[name='processing_costs']:checked").val(), type_price=$("select[name='type_price']").val(); if(typeof $("input[name='is_join']:checked").val() =='undefined'){ type_price=0; } if(typeof visa_type=='undefined') visa_type=$("input[name='visa_type']:checked").val(); http("/send.php",'post',{act:'getPrice',visa_type:visa_type,visa_deadline:visa_deadline,processing_costs:processing_costs, customers_number:customers_number,voa_purpose:voa_purpose,type_price:type_price},function (d){ if(d.code==200){ $('.rv-evisa-service-fee').text(d.data.service_charge); // $('.rv-evisa-government-fee').text(d.data.management_government_costs); $('.rv-sub-total').text(d.data.total + (location.hostname.indexOf('vn-visas.com')>-1?' USD':'')); $('.rv-total').text(d.data.total + (location.hostname.indexOf('vn-visas.com')>-1?' USD':'')); $('.rv-evisa-processing-fee').text(d.data.expenses_incurred_rush); //$('.rv-convert-total').text(d.data.conver_total); if(customers_number!=''){ $('.evisa-applicants-numbers').text(customers_number+" x "); } if(typeof $("input[name='is_join']:checked").val() !='undefined'){ $('.rv-evisa-a-aft-price').text(d.data.type_price); if(customers_number!=''){ $('.rv-quick-customers-number').text(customers_number+" x "); } } if($('.rv-evisa-processing-fee').text()=='0'){ $('.rv-evisa-processing-fee').siblings('span').text(''); } $('.rv-voa-length').text($("select[name='visa_deadline'] option:selected").text()); } },'json'); } $('#voa-arrival-port').change(function (){ if($(this).val()==''){ $('.rv-evisa-arrival-port').text(''); }else{ $('.rv-evisa-arrival-port').text($(this).find('option:selected').text()); } }) $("#type_price").change(function (){ $(".rv-evisa-a-aft-type").text($(this).find("option:selected").text()); var visa_type=$("input[name='visa_type']:checked").val(); getPrice(visa_type); }) function getPassengerPrice(){ var customers_number=$("select[name='customers_number']").val(); http('/send.php','post',{act:'getPassengerPrice',customers_number:customers_number},function (d){ if(d.code==200){ var html=[]; $.each(d.data,function (i,v){ html.push('
'+v.title+'
'); }) $("select[name='type_price']").empty().append(html.join('')); console.log(oneData+'xxxx'); if(oneData!=''){ $("select[name='type_price']").val(oneData.type_price); $(".rv-evisa-a-aft-type").text($("select[name='type_price'] option:selected").text()); }else{ $(".rv-evisa-a-aft-type").text($("select[name='type_price'] option:selected").text()); } } },'json'); } $("input[name='is_join']").click(function (){ if($(this).prop('checked')){ getPrice(); $(".airport-box").show(); }else{ getPrice(); $(".airport-box").hide(); } }) $("select[name='type_price']").change(function (){ getPrice(); }) function getVisaDeadline(){ var visa_deadline=$("input[name='visa_type']:checked").val(); var voa_purpose=$("select[name='voa-purpose'] option:selected").val(); var choose1=visaDeadline==1?'selected="selected"':'', choose2=visaDeadline==2?'selected="selected"':'', choose3=visaDeadline==3?'selected="selected"':'', choose4=visaDeadline==4?'selected="selected"':'', choose5=visaDeadline==5?'selected="selected"':''; if(visa_deadline=='elec'){ var prefix='eVisa - '; $("select[name='visa_deadline']").empty().append('
'+prefix+'30-Day Single
'+prefix+'30-Day Multiple' + '
'+prefix+'90-Day Single
'+prefix+'90-Day Multiple
'); $('.rv-voa-length').text(prefix+'1-Month Single Entry'); }else if(visa_deadline=='signaturepaper'){ var prefix=''; // 2026-10-22 统一期限:观光/Business均只有 15-Day Single/30-Day Single/30-Day Multiple(90 days档已下线) $("select[name='visa_deadline']").empty().append('' + '
'+prefix+'15-Day Single
' + '
'+prefix+'30-Day Single
' + '
'+prefix+'30-Day Multiple
' + ''); $('.rv-voa-length').text(prefix+'15-Day Single'); }else{ var prefix=' - '; $("select[name='visa_deadline']").empty().append('' + '
'+prefix+'15-Day Single
' + '
'+prefix+'30-Day Single
' + '
'+prefix+'30-Day Multiple
' + ''); $('.rv-voa-length').text(prefix+'15-Day Single'); } if(oneData!=''){ $("select[name='visa_deadline']").val(oneData.visa_deadline); } } getVisaDeadline(); getPriceByEnterDate(); /* 页面加载后回填受理时间档位(等service-box生成,避免回调时序问题) */ if(processingParam){ var __fillTimer=setInterval(function(){ var $r=$("input[name='processing_costs'][value='"+processingParam+"']"); if($r.length>0){ $r.prop('checked',true).click(); $r.parent().parent('.label').addClass('active-a'); clearInterval(__fillTimer); } },200); setTimeout(function(){ clearInterval(__fillTimer); },8000); } /* 2026-10-22 快捷申请跳转参数强制同步:URL参数(type/visa_deadline/people)优先于oneData/localStorage恢复, 用户在Home快速申Select后跳转,申请页必须用快捷申请的数据(此前oneData恢复会覆盖URL参数) */ if(visaType && visaType!=''){ $("input[name='visa_type']").prop('checked',false); $("input[name='visa_type'][value='"+visaType+"']").prop('checked',true).trigger('change'); } if(visaDeadline){ $("select[name='visa_deadline']").val(visaDeadline); $('.rv-voa-length').text($("select[name='visa_deadline'] option:selected").text()); } if(peopleParam){ $("select[name='customers_number']").val(peopleParam); $('.rv-evisa-no-applicant').text(peopleParam); $('.evisa-applicants-numbers').text(peopleParam+" x "); } if(visaType!=''||visaDeadline||peopleParam){ var _vt=$("input[name='visa_type']:checked").val(); getPriceByEnterDate(); getPrice(_vt); getPassengerPrice(); } function getHolidayList(){ var vt=$("input[name='visa_type']:checked").val(); if(window._holidays){ return vt=='elec' ? (window._holidays.vn||[]) : (window._holidays.cn||[]); } return []; } function isWorkday(d){ var day = d.getDay(); if(day >= 1 && day <= 5){ var s=d.getFullYear()+'-'+('0'+(d.getMonth()+1)).slice(-2)+'-'+('0'+d.getDate()).slice(-2); return getHolidayList().indexOf(s) < 0; } return false; } /* 计算从当前时间(17:00分界)到入境日期的可用工作日数 17:00前下单当天算1 working day,17:00后当天不算(加一工) */ function countAvailableWorkdays(entryDateStr){ if(!entryDateStr) return 99; var now = new Date(); var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); var cutoff = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 17, 0, 0, 0); var start; if(now < cutoff){ start = new Date(today); }else{ start = new Date(today); start.setDate(start.getDate() + 1); } var parts = entryDateStr.split('-'); if(parts.length < 3) return 99; var entry = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])); var count = 0, cur = new Date(start); var guard = 0; /* 不含入境日当天:签证须在入境日前 */ while(cur < entry && guard < 400){ if(isWorkday(cur)) count++; cur.setDate(cur.getDate() + 1); guard++; } return count; } /* 计算预计日期:17:00分界,数needDays个工作日,日当天18:00前 */ function calcEstimateDate(needDays){ var now = new Date(); var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); var cutoff = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 17, 0, 0, 0); var cur = now < cutoff ? new Date(today) : new Date(today.getTime() + 86400000); var count = 0, guard = 0; while(count < needDays && guard < 200){ if(isWorkday(cur)) count++; cur.setDate(cur.getDate() + 1); guard++; } cur.setDate(cur.getDate() - 1); return cur; } /* 下一个工作日(跳过周末与节假日) */ function nextWorkday(d){ var cur = new Date(d.getFullYear(), d.getMonth(), d.getDate()); var guard = 0; while(!isWorkday(cur) && guard < 60){ cur.setDate(cur.getDate() + 1); guard++; } return cur; } /* 特快/当天时段推算(按送签说明的截止时间,一天两个时段): 电子签/落地签:9:00前提交→当天13:00左右;9:00~14:00下单→当天18:00左右;14:00后→次日13:00 电子签/:9:00前下单→当天18:00(晚上顺丰发出);9:00后→次日18:00(4-8小时档不可选) */ function calcFastEst(visaType){ var now = new Date(); var isSp = visaType === 'signaturepaper'; if(!isWorkday(now)){ var nd = nextWorkday(new Date(now.getTime() + 86400000)); return 'Estimated: + (nd.getMonth()+1) + '/' + nd.getDate() + ' + (isSp ? 'before 18:00' : 'around 13:00'); } var min = now.getHours() * 60 + now.getMinutes(); if(isSp){ if(min < 9 * 60){ return 'Estimated: today before 18:00 (evening dispatch)'; } var nd2 = nextWorkday(new Date(now.getTime() + 86400000)); return 'Estimated: + (nd2.getMonth()+1) + '/' + nd2.getDate() + ' before 18:00'; } if(min < 9 * 60){ return 'Estimated: today around 13:00'; } if(min < 13 * 60){ return 'Estimated: today around 18:00'; } var nd3 = nextWorkday(new Date(now.getTime() + 86400000)); return 'Estimated: + (nd3.getMonth()+1) + '/' + nd3.getDate() + ' 13:00'; } /* 更新出境日期日历的可选上限:入境日期+Your current Visa Type allows a maximum stay of 天数 */ function updateExitMax(enterDateStr){ var map = {'elec': {1:30, 2:30, 3:90, 4:90}, 'signaturepaper': {1:15, 2:30, 3:30}}; var visaType = $("input[name='visa_type']:checked").val(); var dl = $("select[name='visa_deadline']").val(); var days = map[visaType] ? map[visaType][dl] : null; if(!enterDateStr || !days || !window._exitLay){ return; } var parts = enterDateStr.split('-'); var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]) + days); window._exitLay.config.max.year = d.getFullYear(); window._exitLay.config.max.month = d.getMonth(); window._exitLay.config.max.date = d.getDate(); } /* 点击日历中被禁用(置灰)的日期时,提示原因(捕获阶段拦截,避免被laydate吞掉) */ document.addEventListener('click', function(e){ var t = e.target; if(!t || t.tagName !== 'TD' || !$(t).hasClass('laydate-disabled')) return; var ym = $(t).attr('lay-ymd'); if(!ym) return; if(e.stopPropagation) e.stopPropagation(); var parts = ym.split('-'); var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])); var enterV = $("input[name='enterDate']").val(); if(!enterV){ layer.msg('Please select your entry date first', {icon:7, time:3000}); return; } var ep = enterV.split('-'); var enterD = new Date(parseInt(ep[0]), parseInt(ep[1]) - 1, parseInt(ep[2])); var minD = new Date(enterD.getTime() + 86400000); if(d < minD){ layer.msg('The selected date must be after your entry date', {icon:7, time:3000}); return; } var map = {'elec': {1:30, 2:30, 3:90, 4:90}, 'signaturepaper': {1:15, 2:30, 3:30}}; var visaType = $("input[name='visa_type']:checked").val(); var dl = $("select[name='visa_deadline']").val(); var days = map[visaType] ? map[visaType][dl] : null; if(days && d > new Date(enterD.getTime() + days * 86400000)){ var suggest = ''; if(visaType == 'elec'){ suggest = days >= 90 ? 'Visa Type applications beyond 90 days are not supported' : 'Please switch to the 90-day Visa Type'; }else{ suggest = days >= 30 ? 'We recommend the 90-day e-Visa' : 'Please switch to the 30-day Visa Type'; } layer.msg('Your current Visa Type allows a maximum stay of '+days+' days, 'suggest, {icon:7, time:4000}); return; } }, true); /* 清空回程日期,并按当前Visa Type恢复出境日历可选上限 */ function clearLeaveDate(){ $("input[name='leaveDate']").val(''); $('.rv-evisa-exit-date').text(''); updateExitMax($("input[name='enterDate']").val()); } /* 校验行程天数是否超出所选Visa TypeValidity:提示修改回程时间并清空出境日期(日历已限制可选范围,此为兜底) */ function checkTravelDays(){ var enterV = $("input[name='enterDate']").val(); var leaveV = $("input[name='leaveDate']").val(); if(!enterV || !leaveV) return; var e1 = new Date(enterV.replace(/-/g,'/')); var e2 = new Date(leaveV.replace(/-/g,'/')); var days = Math.round((e2 - e1) / 86400000); if(days < 0 || isNaN(days)) return; var visaType = $("input[name='visa_type']:checked").val(); var dl = $("select[name='visa_deadline']").val(); var map = visaType == 'elec' ? {1:30,2:30,3:90,4:90} : {1:15,2:30,3:30}; var maxDays = map[dl]; if(!maxDays) return; if(days > maxDays){ if(visaType == 'elec'){ if(maxDays < 90){ layer.msg('Your trip is '+days+' days exceeds the 30-day visa validity. Please change your return date (exit date within 30 days of entry) or choose a 90-day Visa Type', {icon:7, time:6000}); clearLeaveDate(); }else{ layer.msg('Your trip is '+days+' days exceeds the e-Visa maximum 90-day validity; please contact support or adjust your travel dates', {icon:7, time:5000}); } }else{ if(days <= 30){ layer.msg('Your trip is '+days+' days exceeds the 15-day visa validity. Please change your return date (exit date within 15 days of entry) or choose a 30-day Visa Type', {icon:7, time:6000}); clearLeaveDate(); }else{ layer.msg('Your trip is '+days+' days exceeds the maximum 30-day validity; we recommend the 90-day e-Visa', {icon:0, time:5000}); } } } } /* 为每个处理时间档位追加预计日期 */ function addEstimatedDates(){ /* 2026-10-16 普通档按 5 个工作日推算;特快/当天按送签说明两个时段推算 */ var needMap = {'1':5,'2':3,'3':2,'4':1,'5':0}; $('input[name=processing_costs]').each(function(){ var need = needMap[this.value]; if(need === undefined) return; var $p = $(this).parent().find('p'); if($p.find('.est-date').length) return; var est; if(need === 0){ var vt = $("input[name='visa_type']:checked").val() || 'elec'; est = calcFastEst(vt); }else{ var d = calcEstimateDate(need); est = 'Estimated: + (d.getMonth()+1) + '/' + d.getDate() + ' before 18:00'; } $p.append('
' + est + '
'); }); } /* 2026-10-20:海外站 .com 隐藏入口与机场通道(海外无此渠道) */ if(location.hostname.indexOf('vn-visas.com')>-1){ var sl=document.querySelector('label[for="signaturepaper"]'); if(sl){ sl.style.display='none'; } var tp=document.getElementById('type_price'); if(tp){ var bx=tp.closest('.inputbox-a'); if(bx){ bx.style.display='none'; } } /* 费用单位 USD */ document.querySelectorAll('.rv-evisa-service-fee, .rv-evisa-processing-fee').forEach(function(e){ var li=e.closest('li'); if(li){ li.innerHTML = li.innerHTML.replace(/ 元/g,' USD'); } }); } /* 按可用工作日自动推荐处理时间:禁用来不及的档位并自动推荐合适加急 */ function autoRecommendProcessing(enterDateStr){ var W = countAvailableWorkdays(enterDateStr); var radios = document.querySelectorAll('input[name=processing_costs]'); if(radios.length === 0) return; /* 各档位所需工作日:1=正常4-5, 2=3工作日, 3=2工作日, 4=1工作日, 5=特快4-8小时(当天) */ var daysMap = {'1':5,'2':3,'3':2,'4':1,'5':0}; var available = []; $('input[name=processing_costs]').each(function(){ var r = this; var need = daysMap[r.value] !== undefined ? daysMap[r.value] : 5; if(W >= need){ r.disabled = false; $(r).closest('.label').removeClass('disabled'); $(r).parent().find('p').css('color',''); available.push(r); }else{ r.disabled = true; $(r).closest('.label').addClass('disabled'); $(r).parent().find('p').css('color','#c0c0c0'); } }); if(available.length === 0){ layer.msg('Your entry date is too soon to process before departure. Please change your entry date or contact support', {icon:2, time:4000}); return; } /* 2026-10-22 快捷申请带入的加急档优先:有 processingParam 时直接选中该档(不可用才回退自动推荐), 否则 autoRecommend 按入境日期自动推荐会覆盖用户从Home选择的加急档 */ if(processingParam){ var $pr=$("input[name='processing_costs'][value='"+processingParam+"']"); if($pr.length>0 && !$pr[0].disabled){ $pr.prop('checked',true).trigger('click'); $('input[name=processing_costs]').parent().parent('.label').removeClass('active-a'); $pr.parent().parent('.label').addClass('active-a'); return; } } /* 自动选中合适档位 */ var targetVal = W >= 5 ? '1' : (W == 4 ? '1' : (W == 3 ? '2' : (W == 2 ? '3' : (W == 1 ? '4' : '5')))); var radio = document.querySelector('input[name=processing_costs][value="'+targetVal+'"]'); if(!radio || radio.disabled){ radio = available[0]; } $(radio).prop('checked', true).trigger('click'); $('input[name=processing_costs]').parent().parent('.label').removeClass('active-a'); $(radio).parent().parent('.label').addClass('active-a'); if(W <= 3 && W >= 1){ layer.msg('Only '+W+' working days left before entry; we have recommended urgent processing', {icon:0, time:3000}); }else if(W <= 0){ layer.msg('Your entry date is too soon; only express service (4-8 hour visa) is available, or please change your entry date', {icon:0, time:4000}); } } function getPriceByEnterDate(){ var visa_type=$("input[name='visa_type']:checked").val(), enterDate=$("input[name='enterDate']").val(), voa_purpose=$("#voa-purpose").val(), visa_deadline=$("select[name='visa_deadline']").val(); http('/send.php','post',{act:'getPriceByEnterDate',visa_type:visa_type,enterDate:enterDate,voa_purpose:voa_purpose,visa_deadline:visa_deadline},function (d){ if(d.code==200){ $(".service-box").empty().append(d.data); $("input[name='processing_costs']").eq(0).prop('checked',"checked"); $("input[name='processing_costs']").eq(0).parent().parent('.label').addClass('active-a'); if(oneData!=''){ $("input[name='processing_costs'][value='"+oneData.processing_costs+"']").click(); }else if(processingParam){ var $procRadio=$("input[name='processing_costs'][value='"+processingParam+"']"); if($procRadio.length>0){ $procRadio.prop('checked',true).click(); $procRadio.parent().parent('.label').addClass('active-a'); } } getPrice(visa_type); /* 工作日推算:日期过近时自动推荐加急 */ addEstimatedDates(); var workdaysLeft = countAvailableWorkdays(enterDate); if(workdaysLeft === 99){ $('#workdays-hint').hide(); }else{ $('#workdays-hint').html('Only
' + workdaysLeft + '
working days left until entry (excl. weekends' + (workdaysLeft <= 0 ? ', time is tight — select urgent service or change your entry date' : ', please select a processing time below') + ')').show(); } autoRecommendProcessing(enterDate); } },'json'); } $("#flight").change(function (){ $(".rv-evisa-a-aft-flight").text($(this).val()); }) layui.use(['laydate'], function() { var laydate = layui.laydate; //执行一个laydate实例 var today = new Date(); var year = today.getFullYear(); var month = String(today.getMonth() + 1).padStart(2, '0'); var day = String(today.getDate()).padStart(2, '0'); // 设置最小可选日期为明天 var minDate = ` $ {year}- $ {month}- $ {parseInt(day)}`; var startDate = window._entryLay = laydate.render({ elem: '#enterDate' //指定元素 , type: 'date' ,min: minDate , trigger: 'click' //采用 click弹出 , placeholder_text_single: 'Select' , btns: ['clear', 'now', 'confirm'] //btns 工具按钮 , lang: 'cn' //lang- 语言 cn(中文版)、en(国际版,即英文版)。 , calendar: false //允许显示公里节日 , ready: function (date) {//控件在打开时触发,回调返回一个参数 //console.log(date); //得到初始的日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} } , change: function (value, date, endDate) {//日期时间被切换后的回调 //console.log(value); //得到日期生成的值,如:2017-08-18 //console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} //console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 } , done: function (value, date, endDate) {//控件选择完毕后的回调---点击日期、清空、现在、确定均会触发。 if (value !== '') { endDates.config.min.year = date.year; endDates.config.min.month = date.month - 1; endDates.config.min.date = date.date+1; $('.rv-evisa-entry-date').text(value); getPriceByEnterDate(); updateExitMax(value); } else { endDates.config.min.year = ''; endDates.config.min.month = ''; endDates.config.min.date = ''; $('.rv-evisa-entry-date').text(''); } //console.log(value); //得到日期生成的值,如:2017-08-18 //console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} //console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 } }); var endDates = window._exitLay = laydate.render({ elem: '#leaveDate' //指定元素 , type: 'date' ,min: minDate , trigger: 'click' //采用 click弹出 , placeholder_text_single: 'Select' , btns: ['clear', 'now', 'confirm'] //btns 工具按钮 , lang: 'cn' //lang- 语言 cn(中文版)、en(国际版,即英文版)。 , calendar: false //允许显示公里节日 , ready: function (date) {//控件在打开时触发,回调返回一个参数 //console.log(date); //得到初始的日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} } , change: function (value, date, endDate) {//日期时间被切换后的回调 //console.log(value); //得到日期生成的值,如:2017-08-18 //console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} //console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 } , done: function (value, date, endDate) {//控件选择完毕后的回调---点击日期、清空、现在、确定均会触发。 if (value !== '') { startDate.config.max.year = date.year; startDate.config.max.month = date.month - 1; startDate.config.max.date = date.date-1; $('.rv-evisa-exit-date').text(value); /* 校验行程天数是否超出Visa Validity */ checkTravelDays(); } else { startDate.config.max.year = ''; startDate.config.max.month = ''; startDate.config.max.date = ''; $('.rv-evisa-exit-date').text(''); } //console.log(value); //得到日期生成的值,如:2017-08-18 //console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} //console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 } }); var arrivalTime =laydate.render({ elem: '#arrival_time' //指定元素 , type: 'time' ,format: 'HH:mm' , trigger: 'click' //采用 click弹出 , placeholder_text_single: 'Select' , btns: ['clear', 'now', 'confirm'] //btns 工具按钮 , lang: 'cn' //lang- 语言 cn(中文版)、en(国际版,即英文版)。 , calendar: false //允许显示公里节日 , ready: formatminutes , change: function (value, date, endDate) {//日期时间被切换后的回调 } , done: function (value, date, endDate) {//控件选择完毕后的回调---点击日期、清空、现在、确定均会触发。 if (value !== '') { $('.rv-evisa-a-aft-time').text(value); } else { $('.rv-evisa-a-aft-time').text(''); } } }); }); function formatminutes(date) { var aa = $(".laydate-time-list li ol")[1]; var showtime = $($(".laydate-time-list li ol")[1]).find("li"); for (var i = 0; i < showtime.length; i++) { //var t00 = showtime[i].innerText; // if (t00 != "00" && t00 != "20" && t00 != "30" && t00 != "40" && t00 != "50") { // showtime[i].remove() // } } $($(".laydate-time-list li ol")[2]).find("li").remove(); //清空秒 }