Compare commits

...

927 Commits

Author SHA1 Message Date
Lei OT ce50661b47 水灯节: 更新16号库存 10 months ago
LMR ef6c32141c fix 10 months ago
LMR 0ad4ef2539 sleep2 10 months ago
LMR dd5546d0a9 Merge branch 'master' of https://github.com/hainatravel/information-system 10 months ago
LMR 44f33a72d4 fix 10 months ago
Lei OT d8dd692606 . 10 months ago
Lei OT c5bb739916 水灯节: 更新16号, S票 10 months ago
LMR d948a78039 d 10 months ago
LMR fc0fdb4d1d da 10 months ago
LMR 01d126c115 ft 10 months ago
LMR 25727d79c2 fix 10 months ago
LMR f460db514c add backup 10 months ago
LMR b2fd56e4f0 da 10 months ago
LMR 56dd146567 f4 10 months ago
LMR 4cf7db8c78 f3 10 months ago
LMR 101450ae52 fix bug 2 10 months ago
LMR 3dac8c3fa6 fix bug 1 10 months ago
LMR 350c188a4b Merge branch 'master' of https://github.com/hainatravel/information-system 10 months ago
LMR ee7cbadeba add list_use_hb 10 months ago
Jimmy Liow e7ad46e8c3 16 默认选择 P 票 10 months ago
Jimmy Liow 6271beef73 15 号没票了 10 months ago
candice ac3acb43da 撤下社媒分享图标签 10 months ago
赵鹏 e8a6e256b2 Merge branch 'master' of github.com:hainatravel/information-system 10 months ago
赵鹏 b3a72eef38 澜海账单导入汉特 10 months ago
LMR 5a1f579d0b infofix fix 11 months ago
LMR 4c7411cd5d fix json 11 months ago
LMR 2d42fab88c fix 11 months ago
LMR 8674ef54f7 fix 11 months ago
LMR 8cb5d6e5dc Merge branch 'master' of https://github.com/hainatravel/information-system 11 months ago
LMR 42b43d1edd s 11 months ago
赵鹏 e49c754b5c Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 f33e27eb62 澜海数据在携程那里设置默认。 11 months ago
LMR 89083cc115 fiux 11 months ago
LMR 6f2fe4207f da 11 months ago
LMR 80bebefca3 Merge branch 'master' of https://github.com/hainatravel/information-system 11 months ago
LMR c08a33053e add update_by_icid 11 months ago
LMR 25dc172813 add get_by_icid 11 months ago
Jimmy Liow b09b79331e 修改默认选中价格 11 months ago
candice 38b54ebf69 默认值修改 11 months ago
Jimmy Liow 323823197e Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
Jimmy Liow 0bae215e03 解决价格未更新到页面 11 months ago
赵鹏 ce79335102 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 a4627555ac Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
Jimmy Liow 10ea6e4269 修复日期切换默认价格错误 11 months ago
赵鹏 016a8ac5d0 澜海出票返回结果优化 11 months ago
Jimmy Liow fcf33477ba 水灯节15号Standard票重新开放 11 months ago
candice 728df071b0 删除updated news 11 months ago
赵鹏 b689adea83 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 0901389701 火车接口时效30分钟 11 months ago
Jimmy Liow ffb9eac9c3 修改切换日期默认价格获取方式 11 months ago
Jimmy Liow 3fa789bd2c 修复水灯节表单可以多选价格 11 months ago
Jimmy Liow 43ce2e052b Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
Jimmy Liow 8a8e065bde 解决可以同时选择S+V票 11 months ago
赵鹏 edad5e19d2 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 48b55ab955 //英国传GB 11 months ago
Jimmy Liow 41f8539467 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
Jimmy Liow 161af09d13 解决16号P票问题 11 months ago
candice 12f0396f14 P票刷灰 11 months ago
candice f8e82bbd1d 票种余量信息更新 11 months ago
赵鹏 336d8c54ca CT站新导航 11 months ago
赵鹏 55fc1ec7d6 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 c760080141 新增澜海接口的查询出票信息,退票信息及账单列表信息。因为那边没后台查看。。。 11 months ago
candice 41e84116f1 底部logo添加alt文字 11 months ago
赵鹏 a8b567abf3 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 53bf5d6dd1 改用澜海接口 11 months ago
candice 8cad2785f8 S票加value值 Standard+Transfer+Dinner 11 months ago
candice 8f4ea7c012 tickets文字删除 11 months ago
黄文强@HWQ-PC 22899ec657 更改水灯节表单15号Standard+Transfer+Dinner不可选 11 months ago
黄文强@HWQ-PC e0d15de79f 增加水灯节表单16号Standard+Transfer+Dinner余票 11 months ago
黄文强@HWQ-PC 0bf582cd7c Merge branch 'master' of github.com:hainatravel/information-system
# Conflicts:
#	application/views/mobile_first/ah-lantern-form.php
11 months ago
黄文强@HWQ-PC d8103fd078 水灯节表单改正重复显示余票信息 11 months ago
candice 5146886e75 余量样式细节修改 11 months ago
candice 126b285955 泰铢价格删除 11 months ago
candice 6f5326d4b0 价格修改 11 months ago
candice 33d90a570d 价格修改 11 months ago
黄文强@HWQ-PC 688be20f80 Merge branch 'master' of github.com:hainatravel/information-system
# Conflicts:
#	application/views/mobile_first/ah-lantern-form.php
11 months ago
黄文强@HWQ-PC 7f74d2b195 增加水灯节表单 恢复余量信息 11 months ago
candice bf3bf3cad6 价格修改 11 months ago
candice ccfc82551f 11 11 months ago
candice fcd020811b 价格修改 11 months ago
candice 04b02c4440 11 11 months ago
candice d3bd7a7965 11 11 months ago
candice 9d33b2e70a 删除头条广告 11 months ago
candice 3b4b6cfad4 11 11 months ago
candice 8f81abed34 Merge branch 'master' of github.com:hainatravel/information-system into master 11 months ago
candice 61d1718e14 头部导航链接修改 11 months ago
赵鹏 e590ae3984 fix 11 months ago
赵鹏 ba9bc0a862 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 123b9de006 澜海正式接口上线。 11 months ago
candice 481c2b9a25 11 11 months ago
candice f49f79e3b5 11 11 months ago
candice eab9eeea4a 11 11 months ago
candice 34f2fbd3fa 11 11 months ago
candice 8c91de2b94 11 11 months ago
candice becd3ddc21 11 11 months ago
candice 27add997b6 11 11 months ago
candice 6467ab8328 标题大小写修改 11 months ago
黄文强@HWQ-PC f6533071b9 删除顾问头<p>标签 11 months ago
黄文强@HWQ-PC 078c79b3b8 增加顾问反馈H2标签 11 months ago
黄文强@HWQ-PC 7e18183df1 更改顾问反馈标题 11 months ago
candice 06759d35a4 h2标题修改 11 months ago
赵鹏 277aeebe30 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
赵鹏 a6aabc22ab 澜海火车票功能完成并测试完成。但还是测试接口。 11 months ago
黄文强@HWQ-PC 8dd89abc0e 修改gh顾问反馈的标签 11 months ago
黄文强@HWQ-PC f3f63a65ec 增加在GH网站根据顾问名字读取专属于顾问的反馈标签的功能 11 months ago
黄文强@HWQ-PC d2a928510a Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
黄文强@HWQ-PC 440ed664c2 修改水灯节票种“Standard+Transfer+Dinner”可以选择 11 months ago
candice eb4fbfe261 年份改为2025 11 months ago
candice 16cfad4a5e 头部导航删除china tours 2024/2025 11 months ago
黄文强@HWQ-PC 77d96e9a10 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
黄文强@HWQ-PC 3f21ab7a50 水灯节标签修改 11 months ago
Jimmy Liow 40a6e04bc2 Merge branch 'master' of github.com:hainatravel/information-system 11 months ago
Jimmy Liow edbe59fc97 CH信息平台文件夹结构调整 11 months ago
黄文强@HWQ-PC be8c909d51 增加25年水灯节表单模板 11 months ago
黄文强@HWQ-PC 45fa4dffd7 Merge branch 'master' of github.com:hainatravel/information-system 12 months ago
黄文强@HWQ-PC 0f7969af7e 增加ah,ch,gh对$OPI_Code的初始化处理 12 months ago
赵鹏 d2ee307924 Merge branch 'master' of github.com:hainatravel/information-system 12 months ago
赵鹏 86ac718797 换回携程接口 12 months ago
黄文强@HWQ-PC d4b5a169ba 更改gh-h1多了">"的问题 12 months ago
黄文强@HWQ-PC eabbd75aff 修复gh作者名字加链接的bug 12 months ago
黄文强@HWQ-PC 427158c92c 增加ah,ch,gh作者名字添加链接 12 months ago
黄文强@HWQ-PC 6fd63be9f8 增加ch作者介绍链接逻辑 12 months ago
黄文强@HWQ-PC 81219c12a9 修改ch作者介绍链接逻辑 12 months ago
黄文强@HWQ-PC e37f0f07d8 Merge branch 'master' of github.com:hainatravel/information-system 12 months ago
黄文强@HWQ-PC 4be635abdb 增加ch作者名字添加链接 12 months ago
LMR 042c54cb3d add gm to series site 12 months ago
candice 51c45667f1 11 12 months ago
candice fe789b1d15 Merge branch 'master' of github.com:hainatravel/information-system into master 12 months ago
candice 82909b5a9f 导航按钮添加title 12 months ago
Jimmy Liow 55e7e47418 右侧推荐删除 aside 标签 12 months ago
candice a66966400b 11 12 months ago
candice 4f4182ae4f Merge branch 'master' of github.com:hainatravel/information-system into master 12 months ago
candice f27fe67244 aside main nav标签添加 12 months ago
Jimmy Liow 639688a626 AH 水灯节下线 Standard 类型 12 months ago
Jimmy Liow 804446ac24 删除水灯节在信息页面表单 12 months ago
candice 2751bf3c94 删除keywords一项 12 months ago
赵鹏 5eb7be4755 fix 1 year ago
赵鹏 ae3daef11b fix 1 year ago
赵鹏 a541af9a47 fix 1 year ago
赵鹏 f94c092f06 fix 1 year ago
赵鹏 123ed3a245 CT左右结构新表单 1 year ago
赵鹏 b38799aeaa fix 1 year ago
赵鹏 38935fcd0a Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 15bb56eebc CT产品页表单兼容左右结构。 1 year ago
candice f9ad1b5470 11 1 year ago
candice b7d3eebd18 电话框type值改为tel 1 year ago
candice 17c4fd81f9 表单内容精简,删除CAD选项 1 year ago
candice b111edf848 11 1 year ago
赵鹏 7bcb6fe2c7 TS网站及手机端接口改澜海接口测试。 1 year ago
赵鹏 4e5cac7adc Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 b5e58abbdb 澜海火车票接口上线 1 year ago
candice 9f93b9d0af TA获奖图标更新为2024 1 year ago
candice 7a282a7a3f TA获奖图标更新为2024 1 year ago
candice 0c50e78ce2 TA获奖图标更新为2024 1 year ago
赵鹏 c88477d5bc tp产品预订日期fix 1 year ago
赵鹏 00569cef02 新增澜海火车票查询接口。 1 year ago
赵鹏 81b0822beb Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 681ec822b6 CH上的TP产品默认日期修改。 1 year ago
LMR 0f4ac70071 fix icid 1 year ago
LMR 67a4e3dc99 fix meta 1 year ago
LMR ae1395684f test meta 1 year ago
candice 91fa4f5c21 电话号码输入框type改为number 1 year ago
赵鹏 4be99b2d9c Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 1423dc855f 上海站表单fix 1 year ago
YCC ee3079bba6 客运来源的订单访问路径抓取 1 year ago
赵鹏 009c11098a 上海站线路表单 1 year ago
赵鹏 f91ffc880e 上海站详细页加表单 1 year ago
赵鹏 fbae81a8b7 上海站线路详细页不调用表单。 1 year ago
candice a8e3dba319 搜索框按钮图片添加alt文字 alt="site search button" 1 year ago
Jimmy Liow af8327ca7d CT站删除谷歌广告代码 1 year ago
LMR 63225aa81d test order path 1 year ago
candice 3605c9a6eb 图片添加alt文字 1 year ago
YCC 93072cc51c 添加香港到一日游导航入口 1 year ago
YCC a8c1549ce0 添加导航入口 1 year ago
candice 9c387fa2ce 图片添加alt文字 1 year ago
candice 25cca56090 添加alt文字 1 year ago
candice ffb9629cbd 图片添加alt文字 1 year ago
candice 53924c2450 底部TM按钮链接修改为 /forms/create-my-trip.htm 1 year ago
candice d28e6ab06c 删除头部导航跨国链接 1 year ago
LMR 3c198cb7d1 注释 sms 1 1 year ago
赵鹏 b43cc94794 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 5f1a375473 CT站手动设置信息发布时间 1 year ago
黄文强@HWQ-PC 1c8ef378e6 CH成本换算成美元,增加判断是否是ch的逻辑 1 year ago
黄文强@HWQ-PC 4335e66225 CH成本币种换算成用美元 1 year ago
LMR f846137062 fix 1 year ago
LMR fb2b5de674 format 1 year ago
LMR 077712eaab fix show 1 year ago
LMR 0161f333c2 rm log 1 year ago
LMR ff16807980 test amp_json 1 year ago
LMR 07b6937f5f fix 50 txt 1 year ago
LMR ebf7170e51 fix url 1 year ago
LMR bd5eecc3c6 fix test 1 year ago
LMR 9432e6f43f Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 0f4e4faf9d add @@@ 1 year ago
LMR a94c6fdcd3 format 1 year ago
candice a47335949e 底部社媒推荐添加链接 1 year ago
candice 63adaebf5a 底部社媒推荐添加链接 1 year ago
candice 5e1cac893a 底部社媒推荐添加链接 1 year ago
LMR 4e35f0282e echo json_encode(array('err'=>'容错1')); 1 year ago
LMR 516181d9f4 容错2 1 year ago
LMR 7b07b5a141 容错2 1 year ago
LMR 5b9b199ce4 fix update_info_by_keys 1 year ago
LMR 609b972176 fix header('Access-Control-Allow-Origin:*'); 1 year ago
LMR a329b45f19 返回值 1 year ago
LMR 2dba5aad3f fix up 2 1 year ago
LMR 0f4136181d fix strpos($keys, 'undefined') !== false 1 year ago
LMR 10c9024ccd fix 1 year ago
LMR 4719149e4c infox 1 year ago
LMR 9bff796497 add force ic_url 1 year ago
LMR 76f1d93ce6 add log 1 year ago
LMR e14baeecfa fix 30 1 year ago
LMR 3bbb1c0257 fix 1 year ago
LMR 59d0ea01b3 Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 466e8f197f todo: list_info_by_keys 1 year ago
Jimmy Liow 33bd626cdb 水灯节表单禁用地点 Heritage 1 year ago
candice 5a6e974d8a 11 1 year ago
candice f64a59cdb4 样式细节修改 1 year ago
candice 5e3d382c3c 联系方式删减 1 year ago
candice 90cdb1880a 联系方式删减 1 year ago
candice 622e79fcf0 联系方式删减 1 year ago
LMR 0b49bff650 yrdy 1 year ago
LMR 7a6c6409a3 fix 1 year ago
LMR d3fc334525 fix 1 year ago
LMR 29218c5c9d fix2 1 year ago
LMR 19c0f5258b fix 1 1 year ago
LMR 6f8a287ac1 fix 1 year ago
LMR 3645a67b45 add infofix 1 year ago
Jimmy Liow 91387297e0 CH、GH 统一使用 optimize 目录的图片 1 year ago
Jimmy Liow 8b1a5d01c7 image 目录统一使用 chinahighlights 1 year ago
Jimmy Liow acbf779d0b 使用 optimize 做获取图片宽高目录 1 year ago
candice 894bbbc585 底部模板删除our differences链接 1 year ago
LMR 8b74fa95f0 fix index.htm 1 year ago
LMR dab7a9f50d Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 114becf0e2 formate code 1 year ago
Jimmy Liow 8f6395303c Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow 46a2bf2e55 客人信息表单日期不能超过四位数 1 year ago
LMR c1dcd41570 add pd tour 1 year ago
LMR 93d0f928c1 Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 7b2877e911 da 1 year ago
candice 31bd67da9e 样式细节调整 1 year ago
candice e47d303d89 新增国家号选择 1 year ago
candice 5b3969f55e Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
Jimmy Liow 8d282612a8 合并区号和手机号保存 1 year ago
candice c484005bf1 新增国家号选择 1 year ago
candice 5aac2e3387 样式细节调整 1 year ago
candice caa735c708 新增国家号选择 1 year ago
candice 2b630a31df 样式细节修改 1 year ago
candice bf6986e05f 电话框引导语修改,去掉lable,换成placeholder 1 year ago
candice 6fc73567ec 电话框引导语修改,去掉lable,换成placeholder 1 year ago
candice ce8cdfa4d0 添加国家号 1 year ago
candice 1af4a8671a 添加国家号 1 year ago
candice a8679db263 恢复国籍选择,取消区号 1 year ago
candice dbb057384c 添加国家号 1 year ago
candice c89e3d53b5 电话号码添加国家号 1 year ago
candice 7933f856bc Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 22b55ca5fc 11 1 year ago
Jimmy Liow 80375f3d69 删除 AH、CH、GH 机票信息必填 1 year ago
Jimmy Liow 573e2a8a01 删除机票必填验证和无用的jQuery日历 1 year ago
赵鹏 1c80267de8 修复预售时间表有重复站点的话无法获取数据的错误 1 year ago
赵鹏 1768776156 自动出票排序先按日期,再按预售时间。这样可以优先预售期内的先出。 1 year ago
赵鹏 ecdbe13813 优化自动出票sql,兼容多条收款记录的订单。 1 year ago
赵鹏 e36f5f885d 自动出票排序重新修改。(我记得改过了的,不知道怎么不见了。) 1 year ago
赵鹏 de21b4e693 超过12个小时才停止抢票 1 year ago
赵鹏 5c1d5c3877 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 fbfbbe2581 设置自动出票运行时间为3分钟 1 year ago
LMR b195f05e8f add log 1 year ago
赵鹏 4fbebb3b2e Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 4c2414805f 自动出票符合条件出票时加日志,用来判断订单自动出票中哪一步出问题。 1 year ago
candice a19b664015 11 1 year ago
candice f359270696 Merge branch 'master' of github.com:hainatravel/information-system into master
# Conflicts:
#	application/views/mobile_first/ah-lantern-form-info-page.php
#	application/views/mobile_first/ah-lantern-form.php
1 year ago
candice 6a5523bdb2 11 1 year ago
candice 278d9bfb47 11 1 year ago
candice 05167e09c7 头部导航删除zodiac signs和dream meaning 1 year ago
Jimmy Liow a7341b4854 Heritage只有15号的票 1 year ago
Jimmy Liow 23981900c9 解决默认价格设置错误 1 year ago
Jimmy Liow 5d2cb7931c 水灯节信息页表单改版 1 year ago
Jimmy Liow 43e53085eb 增加十人以上价格优惠 1 year ago
Jimmy Liow 8c30de1ff9 AH 水灯节表单新优化 1 year ago
赵鹏 5f406b87f5 TA加nofollow 1 year ago
赵鹏 23f627eef7 预售日志关闭 1 year ago
赵鹏 9e0e5235c8 safri锚点问题 1 year ago
赵鹏 012980f612 证件号判断错误。 1 year ago
赵鹏 6ece6fb525 自动出票开启预售期的日志,检查8点整的订单为何没有自动出票。 1 year ago
赵鹏 ee2c60ee06 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 7729fb8da5 购物车加rel="nofollow" target="blank" 1 year ago
Jimmy Liow 22739403f8 航班日期超出 SQL Datetime 范围则设置为空 1 year ago
赵鹏 8e79ad252d Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 213744009d 自动出票的订单根据出发城市的预售时间来排序。 1 year ago
Jimmy Liow 40ed5237a8 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow 8bea117546 客人信息表单增加日期范围限制 1 year ago
赵鹏 1624e36ad3 自动出票关闭预售期的测试日志 1 year ago
赵鹏 6d640bee99 fix 1 year ago
赵鹏 d1dec4bfd5 fix 1 year ago
赵鹏 2d3902209c 1. 火车搜索框替换标签<!--@TRAINSEARCH-FORM@--> 2.可以设置默认城市 1 year ago
赵鹏 814157ed87 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 318d4bd5a8 fix 1 year ago
LMR 463000da50 Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 56cf181551 fix cache path 1 year ago
赵鹏 8a65396a35 自动出票优化 1 year ago
赵鹏 05ac02142b Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 09e547096f 上海站静态话fix 1 year ago
LMR 2e932db6a2 fix 1 year ago
LMR 00718cf541 fuda 1 year ago
LMR b365bc5073 opt bad cache 1 year ago
赵鹏 e0633c07c3 fix 1 year ago
赵鹏 f67786c967 预售日支持自动出票 1 year ago
赵鹏 810cf54752 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 589c897c0d CH站TP版块调用自己的样式https://proxy-data.chinahighlights.com/css/daytrip/tpbase.css 1 year ago
candice ecbb96c8fd 新增三站 线路卡片 模板代码 1 year ago
candice 3d086bb0c2 添加提示语 1 year ago
赵鹏 3db8fe5513 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 139911b721 TP的详细页加限制,翰特找不到产品信息不出预订表单 1 year ago
candice d46627faca 样式细节调整 1 year ago
赵鹏 df8df51bbf Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 470590af01 火车预售时间修改功能上线 1 year ago
candice 2aa44e9845 样式细节修改 1 year ago
candice f82f8c95a0 样式细节修改 1 year ago
candice 1609cf908b 细节样式添加 1 year ago
candice 90dc5d9243 票种部分文字加粗 1 year ago
Jimmy Liow f9cbccd499 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow 4087e73ff5 AH CAD 跨年表单 1 year ago
黄文强@HWQ-PC 08bbf9666f 增加ah和ph是否显示广告里面对空逻辑的判断 1 year ago
黄文强@HWQ-PC 4b17fa89ad Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
黄文强@HWQ-PC d6b0503dc0 修改判断是否展示广告忘记加empty($meta_show_advertise)判断条件逻辑 1 year ago
赵鹏 ba98a93f2a Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 39f6f144db 火车预售时间维护功能。 1 year ago
黄文强@HWQ-PC 165bb2a8d4 把“是否展示广告提示”改为“是否展示右侧广告” 1 year ago
黄文强@HWQ-PC 2e12851439 修改判断是否显示广告的逻辑错误 1 year ago
黄文强@HWQ-PC 35aa4ba386 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
黄文强@HWQ-PC e250747476 把是否展示广告的0-1判断逻辑改为"yes"-"no" 1 year ago
candice 39a90562d5 补附加样式和JS 1 year ago
candice 845c0b0f37 JS恢复 1 year ago
candice f408a7636f JS精简 1 year ago
candice 1c052d21de Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice bc9bb92838 JS精简 1 year ago
黄文强@HWQ-PC ef523066c5 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
黄文强@HWQ-PC e3fc1423b3 修改依然显示class=right_brand_info的广告div 1 year ago
candice 3be7953948 JS精简 1 year ago
candice e70b8e38b3 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 06b6824312 JS精简 1 year ago
黄文强@HWQ-PC bb83cf650a Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
黄文强@HWQ-PC de54f8417c 信息平台增加是否显示右侧广告按钮 1 year ago
Jimmy Liow a9aac74fad 调整机票提醒位置 1 year ago
candice 3020b581f1 样式调整 1 year ago
candice 43dc57353d 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice 71eef37ba2 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice 0e2a702f14 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice 9feaa0804d 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice ffb803c6ea 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice a9c30cfcee 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice 3506a266e4 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 48c2ca28b6 删除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
黄文强@HWQ-PC 10397e5c65 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
黄文强@HWQ-PC e68dff1005 修改gh-h1没加strtotime方法 1 year ago
candice c2f7301bb9 添加 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice f4bf6b544c Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice c0015a3523 添加 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
黄文强@HWQ-PC 1d890a2387 Merge branch 'master' of github.com:hainatravel/information-system
# Conflicts:
#	application/controllers/information.php
#	application/views/mobile_first/ah-h1.php
1 year ago
黄文强@HWQ-PC 471b425861 增加ch和gh的发布日期功能 1 year ago
candice 13f6fb25e0 添加 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 1 year ago
candice 4cfaf25162 移除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 至表单文件 1 year ago
candice 54dfe2bfc0 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 3b95fccfde 移除 <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script> 至表单文件 1 year ago
Jimmy Liow 96b2131bec 客人信息表单增加机票提示 1 year ago
Jimmy Liow 917f449f04 取消发布日期默认值 1 year ago
Jimmy Liow faac9b862e AH 增加发布日期判断 1 year ago
黄文强@HWQ-PC dcb914b432 信息平台右侧增加发布日期框 1 year ago
candice 32afc727e4 底部模板history更换为loyalty program 1 year ago
Jimmy Liow 2a4a951a05 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow 60f57b38bd 删除 GH GG 广告代码 1 year ago
candice 0f40b89266 div精简 1 year ago
candice 963d40cc65 11 1 year ago
candice 935349967d div精简 1 year ago
candice b40ee07d4e 精简div 1 year ago
candice f849fb0a9c 11 1 year ago
candice 3b9afaf4d0 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 18914682c4 div精简 1 year ago
Jimmy Liow 60e8599713 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow c1f4b2252a CH、GH底部图片加上延迟加载 1 year ago
candice bf430dfa91 div层级精简 1 year ago
candice 27212765cc Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 6265bbaad6 div层级精简 1 year ago
Jimmy Liow b4db47988f AH、CH、GH删除Google广告代码 1 year ago
candice 3211da0de1 png替换为jpg 1 year ago
candice 26fb30483b 底部why us图片添加宽和高 1 year ago
candice 05623249a8 png替换为jpg 1 year ago
candice 26fc372223 png替换为jpg 1 year ago
candice d8eeaad001 png替换为jpg 1 year ago
candice 785769e54b png图更换为jpg 1 year ago
Jimmy Liow b4e4496188 AH PC 端增加延迟加载 1 year ago
Jimmy Liow 59a7a91f87 AH 底部图片加上延迟加载 1 year ago
candice 61d1d7e08a 底部whyus内容修改 1 year ago
赵鹏 eb946c99f8 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 941555a4a6 更改火车票自动出票信息平台页面的价格显示栏目为销售的名字 1 year ago
candice 0afde5af9e 样式修改 1 year ago
Jimmy Liow cfc08936bc 精简CH、GH网站reviews个数 1 year ago
Jimmy Liow 14e3d0e7cb 忽略 /info.php 1 year ago
candice bc14f704bb TP分数修改 1 year ago
candice 9da5fe82c5 底部推荐位置更换 1 year ago
candice d14fc3dc49 底部推荐只保留4个位置 1 year ago
Jimmy Liow c9ab6495f3 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow 328871f456 忽略info.php 1 year ago
candice d4dc052240 11 1 year ago
candice 036194fad0 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 734f11ab18 11 1 year ago
Jimmy Liow 49888b4e84 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow a95f0410a9 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
candice f774e8d5a9 底部推荐只保留4个位置 1 year ago
Jimmy Liow 638ede80d4 信息平台启用meta robots设置 1 year ago
candice 3889c6ea01 底部推荐只保留4个位置 1 year ago
candice fc6410b256 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice f36babb1fb 底部推荐只保留4个位置 1 year ago
Jimmy Liow 840f7e5b9f 修复AH目的地Review为三个 1 year ago
Jimmy Liow 46457a8785 精简AH网站reviews个数 1 year ago
candice 4398870a4b 右侧反馈标签删除 1 year ago
candice 671fdf9785 外链添加nofollow 1 year ago
赵鹏 f8ab581d34 还原回去先,不然TP网站无法使用 1 year ago
赵鹏 68a7a74c0f TP产品读取229的数据库链接改为和火车自动出票的链接,目前GH的网站上没有229 1 year ago
LMR 725ffb663e Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 7f3fe43362 fix curl 1 year ago
LMR 2d4ad93a94 add curl header 1 year ago
candice 5b429599eb newsletter jquery删除 1 year ago
赵鹏 b03a126698 解决冲突 1 year ago
赵鹏 c600f95b47 火车首页fix 1 year ago
赵鹏 7c4080ab0d Merge branch 'master' of github.com:hainatravel/information-system
# Conflicts:
#	application/controllers/information.php
1 year ago
赵鹏 3622569c3b CH火车首页改版,去掉top banner 1 year ago
candice a269b1fdf4 头部导航增加about us 1 year ago
LMR 6c7d943631 fix 1 year ago
LMR f7cdf689b5 da 1 year ago
LMR a136eefbe6 tewt 1 year ago
LMR 359df1fd8e Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR 33d83cc68a fix 1 year ago
Jimmy Liow 94d4f1e1bb CH 删除头部视频模板 1 year ago
candice f2cda3dfaa 11 1 year ago
candice 08e87a3802 底部newsletter表单移至信息平台,替换为链接 1 year ago
candice 94574e015d 删除头部图片 1 year ago
赵鹏 b0aa3bf4e3 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 483dda454d 香港,台湾,澳门三地携程出票时,地区代码传CN 1 year ago
Jimmy Liow 6b2f5f0671 合并产品页信息页头部 1 year ago
Jimmy Liow d2b39cdaf9 CH 删除头部大图模板 1 year ago
Jimmy Liow 174937c6cc CH 删除头部大图模板 1 year ago
candice 8621609ed9 头部大图删除 1 year ago
candice 3da7745c6e 删除底部newsletter表单和相关JS 1 year ago
candice 8594ba2400 票价修改,增加泰铢价格 1 year ago
Jimmy Liow cac450b43f AH 撤下GG Ads 1 year ago
Jimmy Liow 4f8f5465b8 增加 Google Ad 代码 1 year ago
Jimmy Liow 9057b6c687 AH、CH、GH 撤下页头的单元广告 1 year ago
candice 668658776e 11 1 year ago
candice 8ee88e233b 11 1 year ago
candice 07f42b2051 11 1 year ago
candice 4700c8d0d0 新增rel="nofollow" 1 year ago
candice 38d6e033e8 新增 rel="nofollow" 1 year ago
candice 46aa1cada2 添加 rel="nofollow" 1 year ago
candice 991e8971a1 11 1 year ago
candice d0794575e0 11 1 year ago
candice 26098a350b 11 1 year ago
LMR e85bb4c117 fix 1 year ago
LMR cb12995763 fix 1 year ago
LMR c31bd10968 add gj_gm update cache 1 year ago
LMR 460d640211 up 3 1 year ago
LMR f7b7fd5e74 v3 1 year ago
LMR 58e99b79f4 +2 1 year ago
LMR d07f37173a test link gm database 1 year ago
LMR e54fd396d3 add test gm database 1 year ago
LMR fbad1da0e0 fix gh_gm tpl 1 year ago
candice e8d79dd3ab 11 1 year ago
candice 80838a76b9 人数选择恢复恢复为加减 1 year ago
candice 4d8f4ae958 人数删除0选项 1 year ago
Layne 506039d094 更改结构化标签的传递数据 1 year ago
Layne d711e5e333 更正结构化标签代码错误 1 year ago
Layne 23ff03d4e4 结构化标签新增在线作者判断 1 year ago
candice 747effe3e3 人数选择改为下拉框 1 year ago
LMR 09c61276c1 fix 1 year ago
LMR df70c3512c Merge branch 'master' of https://github.com/hainatravel/information-system 1 year ago
LMR ae6c935207 add gm copy 1 year ago
candice 6f7136f5af 11 1 year ago
candice 2fec3cafc4 11 1 year ago
candice bcf9bdccd1 头部导航logo调整 1 year ago
candice 75d0f6ec4c 头部导航Logo调整 1 year ago
candice 171dc0481e 11 1 year ago
candice 3f6a3b9656 模糊出发日期修改 1 year ago
candice b51c18ac5f 邮箱自动出现和相关样式删除 1 year ago
candice 027ba24b24 删除头部大图,PC和移动端一体 1 year ago
candice ad26727400 底部newsletter表单删除,替换为按钮,相关JS删除 1 year ago
candice fca64df64d html结构调整 1 year ago
candice 3fd1a82def 右侧品牌内容修改 1 year ago
candice 0999f5fbcd 右侧品牌内容修改 1 year ago
赵鹏 a157ca3983 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 5ae28c8d0e 顺途接口升级,根据要求增加人员国籍的数据 1 year ago
candice bc6f7a519a 11 1 year ago
candice 311817f9dc 11 1 year ago
candice bf0434bb87 11 1 year ago
candice cb016ba41c 11 1 year ago
candice edc98f3eaf 11 1 year ago
candice 6321f2a76f 11 1 year ago
candice fc9b3782de 11 1 year ago
candice d69728251b 11 1 year ago
candice 8c463a4c9a 底部aboutus模板内容优化 1 year ago
赵鹏 f99671d1e2 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 3bde269f21 CT机票首页去掉搜索框 1 year ago
Layne 1634128338 gh google adsense 代码位置修改 1 year ago
Layne 8bfafd1eef gh 新增 google adsense 判断 1 year ago
candice 45a9c583fa 11 1 year ago
candice 60884517cb 11 1 year ago
candice 9e64189cd9 11 1 year ago
candice a97149a6d4 11 1 year ago
candice a1cc35c4c1 底部aboutus模板内容优化 1 year ago
candice 25a651c9e6 微信二维码删除 1 year ago
candice bafdcdb1c1 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
candice 6855da951f 微信二维码隐藏 1 year ago
Jimmy Liow db9b9aa441 Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
Jimmy Liow f3a857cfbd CH H1 兼容没有域名的图片地址 1 year ago
candice 0a8642bea0 11 1 year ago
candice c31c6f6803 11 1 year ago
candice 63b001717f 底部why us内容优化 1 year ago
candice a211cf3507 底部why us模板内容优化 1 year ago
candice 70f2cdee36 11 1 year ago
candice 4d24f969c5 11 1 year ago
candice 0772806f86 底部目的地链接内容修改 1 year ago
candice d4a2b2f0d7 11 1 year ago
candice eeb9b15bf1 右侧品牌内容修改 1 year ago
candice 01930e0f8a 11 1 year ago
candice 56a8d76a8c Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
candice 52ca3bb1cb 右侧品牌内容修改 1 year ago
Jimmy Liow df8826d8a1 修改CH H1 大图无法显示 1 year ago
candice 36c58c5651 底部目的地链接内容修改 1 year ago
candice c0ec579c06 11 1 year ago
candice 6bd6a5ffa0 11 1 year ago
candice bc2ae6fb9c 底部目的地链接内容修改 1 year ago
candice bfaf5de955 11 1 year ago
candice 8ca0c612d5 11 1 year ago
candice 75f08d1118 11 1 year ago
candice a9a3237321 11 1 year ago
candice 5037960164 11 1 year ago
candice 6e95a791fd 11 1 year ago
candice 189a06fe7e 11 1 year ago
candice 062c48b853 底部why us和aboutus模板优化 1 year ago
candice c20faf3737 底部why us和about us模板优化 1 year ago
LMR db8b245d0f test hook 1 year ago
LMR 42c3145959 add case 'origin-gm.mycht.cn':
$base_url = 'https://gm.mycht.cn';
        break;
1 year ago
LMR cf72526b46 fix gm update cache 1 year ago
LMR 4d10ae4eac fix gm cache path 1 year ago
LMR c71a405ca8 add search new 1 year ago
candice 0aeb43f16c 成人人数name值恢复 1 year ago
YCC 14e3e2577c 修改搜索记录数 1 year ago
YCC 9604461cad 修改搜索结果项为48 1 year ago
candice d85ea4a9e6 隐藏hotjar JS 1 year ago
candice dc876151a1 成人人数name值修改为adult 1 year ago
Jimmy Liow 3fa46e4e22 AH CH GH所有含人数选择表单新增人数默认 1 year ago
candice f8ce3b83a4 恢复微信二维码 1 year ago
candice 150268b2f6 11 1 year ago
candice 3efb7dd59a 11 1 year ago
candice 5fcf379b4a 头部导航链接修改 1 year ago
candice b86a6197e0 11 1 year ago
candice c101b93a56 模糊出发日期改为下拉框 1 year ago
YCC 9f2c833b89 更新抓取的网站 1 year ago
赵鹏 2a782829b9 预售期的日期规则改动,是14天。 还有就是无效订单暂时不重复出票,避免数据错误的无效订单。 1 year ago
赵鹏 118b68f3ab 自动出票错误信息记录 1 year ago
赵鹏 45edae630a Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 de578063dd 先去掉15天预售期当天的重复提交。默认都是3次。 1 year ago
candice 2ad621328d 头部导航链接更新:新增西班牙和欧洲链接 1 year ago
赵鹏 0a47b3793e Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 8493c14add 添加判断出票号是否存在。如果有出票号,就不再重复提交自动出票 1 year ago
candice ef3ac88523 11 1 year ago
candice 1db303685d 11 1 year ago
candice f39b93740e 11 1 year ago
candice bcf9cfad54 添加星级图标 1 year ago
candice e656e3224d 添加星级图标 1 year ago
candice b7b2b77ae0 添加星级图标 1 year ago
candice fe83bf806f 11 1 year ago
candice e405a24195 11 1 year ago
candice d0e6207e2e Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 0f381ef790 11 1 year ago
赵鹏 e4a0874f4e Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
赵鹏 345cb37a0e 自动出票测试版 1 year ago
candice 754da6f757 11 1 year ago
candice 487b680c8f 11 1 year ago
赵鹏 38ac4dc1c6 自动测试版,每次2个订单。 1 year ago
candice e18036b9fa 11 1 year ago
candice 4d64cf4bed 11 1 year ago
candice 529296e2ac 11 1 year ago
candice 5e5e314a03 11 1 year ago
candice 3caab889f5 11 1 year ago
candice 3100d1bb2f 头部导航链接修改 1 year ago
candice 802a91dee6 11 1 year ago
candice 99e4737dbb 11 1 year ago
candice af823716cc 11 1 year ago
candice d8369266c5 11 1 year ago
candice 8c11c3e4e4 11 1 year ago
candice d0282a2b6b 11 1 year ago
candice fd8fc01534 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 6f381c049a 头部导航内容修改 1 year ago
Jimmy Liow dbed84450c 测试带星号反馈列表 1 year ago
YCC 2c774c234c 添加上海 ct站点的路径抓取 1 year ago
candice e3b3e6ea44 11 1 year ago
candice b4a5babc3e 底部目的地链接更新 1 year ago
candice a5e837de4b 11 1 year ago
candice da3eb5f805 11 1 year ago
candice 598157f50b 底部链接更新 1 year ago
candice 9c305e0107 底部目的地链接新增 1 year ago
candice f515032965 11 1 year ago
candice b0586786d0 Merge branch 'master' of github.com:hainatravel/information-system into master 1 year ago
candice 97cabf6e4a 底部目的地链接删除tours 1 year ago
hainatravel b477be6c85
Update information.php
开放广告重复显示
1 year ago
candice 1bf723fa3e 11 1 year ago
candice 24015cb433 11 1 year ago
candice 543e7d1e89 11 1 year ago
candice e1e470d4fa 底部目的地链接样式修改 1 year ago
candice aa1b5254a0 11 1 year ago
candice 4259157bef 11 1 year ago
candice ef5a1dd7e9 11 1 year ago
candice d74fd51650 成人人数选择修改 1 year ago
candice ae822174cb 11 1 year ago
candice 0001c45d63 11 1 year ago
candice 55b93e9391 11 1 year ago
candice 8c5daaf296 11 1 year ago
candice 1000479c95 恢复日期模糊选择 1 year ago
candice db722bb2ad JS恢复 1 year ago
candice e3abc9bcff JS修改,使用线路页面表单JS 1 year ago
candice 3a508cea72 成人人数选择修改 1 year ago
Jimmy Liow f3deedc925 护照表单增加塞尔维亚国籍 1 year ago
candice a76f70dbf1 11 1 year ago
candice a83efb394c 11 1 year ago
candice 1070b5f913 成人人数选择修改 1 year ago
candice 20ee13fabc 成人人数选择 1 year ago
candice 97cde28f5f 成人人数选择修改 1 year ago
Lei OT cc67d3eac0 fix: 日期隐藏; 提交按钮ID 1 year ago
Jimmy Liow e0042db6a8 解决模糊日期隐藏问题 1 year ago
Lei OT 47957ca92f perf: ah-info-page-form: 大致日期就不显示日期选择 1 year ago
Lei OT ecc5654a6b perf: ah-info-page-form: 大致日期就不显示日期选择 1 year ago
candice 533a8f1e71 11 1 year ago
candice 103ad258f6 11 1 year ago
candice 0c29043b7d 11 1 year ago
candice 9f1291b69c 11 1 year ago
candice 93af829b4d 11 1 year ago
candice 5909bda378 11 1 year ago
candice 307344e6d0 11 1 year ago
candice d2b8bcae36 11 1 year ago
candice a4e20a08d7 模糊触发日期修改 1 year ago
candice 9c3a03358d 11 1 year ago
candice 44066bcc17 11 1 year ago
candice 9115937155 11 1 year ago
candice 22ba4f40dc 11 1 year ago
candice fe39444447 11 1 year ago
candice a1f5510c1c 11 1 year ago
candice 30c12d7fda 11 1 year ago
candice 5e0a706c8f 11 1 year ago
candice a2e5cc6eea 11 1 year ago
candice 60334346f6 11 1 year ago
candice 889cc87d64 11 1 year ago
LMR bee9b24338 12 + 倒序 1 year ago
LMR 47b5212e52 faiux 1 year ago
LMR 469ab4833b add test 1 year ago
YCC 974895c64a 添加查询ts站点 1 year ago
LMR ddf2d3d0aa Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
LMR e45156bb8a add gh 1 year ago
Jimmy Liow a290004181 修复 Japan Tours 集合页没有绑定产品编号 1 year ago
YCC c0fd213a04 添加ts网站的日志抓取 1 year ago
LMR 0065d3511a add gh 1 year ago
LMR 02cf2d188b Merge branch 'master' of github.com:hainatravel/information-system 1 year ago
LMR 75c3b41410 fix 1 year ago
Jimmy Liow aba590ee16 护照表单只需要保存第一个客人联系方式 1 year ago
LMR 872809de68 fx 1 year ago
Jimmy Liow cc1eefdefd 删除AH导航自动隐藏 2 years ago
candice 1a1b3236b5 11 2 years ago
candice be3888bfb8 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
Jimmy Liow 956c1935fc Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
candice b468fcc195 底部模板增加USTOA 2 years ago
Jimmy Liow 02ffa70913 删除无效的SQL测试 2 years ago
candice bcb779cd9c 底部模板增加USTOA 2 years ago
Jimmy Liow 16adc76d7b GH和CH网站实现线路价格代码 2 years ago
Jimmy Liow 2f29332245 解析价格标签增加 $dept_sn 2 years ago
Jimmy Liow 06f5b90258 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 9223a52a00 增加测试分段 2 years ago
candice f1e44f67b1 人数选择修改,和其他表单保持一致 2 years ago
LMR 7c369b4b11 dd 2 years ago
LMR 3c84380182 fix 2 years ago
Jimmy Liow a88cae1b95 价格增加事业部参数 2 years ago
Jimmy Liow aee1411ec3 使用 BASE64 传参 2 years ago
Jimmy Liow 99bfe0f593 增加动态测试价格标签 2 years ago
candice dee88907e8 移动端删除TP图标 2 years ago
candice cddf039344 11 2 years ago
candice 39fa84265a 移动端TP反馈图标修改 2 years ago
candice 39a620fa69 头部TP反馈图片修改 2 years ago
candice 42b35a4868 11 2 years ago
candice 69971c6c39 右侧反馈 替换为 <!--@FEEDBACK_Bangkok,Tokyo,Saigon,Siem Reap@--> 2 years ago
LMR 447a091693 add gh_vac 2 years ago
LMR 75d236e6ed Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR ae2c233b2a fix gh_ 2 years ago
Jimmy Liow 0e8ade5c24 客人ID和日期增加空格 2 years ago
Jimmy Liow a30ea07f1c Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow ff26e35126 解决城市反馈标签重复标题 2 years ago
LMR b9ccf8f151 fix 2 years ago
candice 778b800fb2 11 2 years ago
candice bf9101b971 头部导航目的地下内容更新 2 years ago
candice 2bcbaf8967 11 2 years ago
candice d990f062d1 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 3afaccdc5a 11 2 years ago
Jimmy Liow 4200778a5f 增加价格测试方法 2 years ago
candice c58abf902c Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 969c4dff00 11 2 years ago
Jimmy Liow 52fbb9ab14 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow a9d7b36717 #ah-mtc-3,st,2# 2 years ago
candice 42ab2c9c81 头部导航目的地下内容修改 2 years ago
LMR 1d87b70c63 add config gh 2 years ago
Jimmy Liow 8aeabebfb5 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 848c49f44c test_get_feedback_by_city_name 2 years ago
candice 8d4c002b60 头部导航itinerary ideas相关内容修改 2 years ago
LMR b4b8f26dde fix 2 years ago
candice aad719abec 11 2 years ago
candice 59c52d288c 11 2 years ago
Jimmy Liow eb2354e756 修复标签没有生效 2 years ago
candice 3a53141f56 删除cookie相关内容 2 years ago
candice d5c5127743 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 455b0960ea 11 2 years ago
candice 427177cdb8 右侧模板增加展示反馈10条 2 years ago
Jimmy Liow 8fc3933256 增加标签 NEWEST_FEEDBACK_10 2 years ago
Jimmy Liow b9eaff1db5 修改测试调用方法 2 years ago
Jimmy Liow a422d10148 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow da2af2a259 最新反馈增加默认条数 2 years ago
LMR 71f9e187aa fux 2 years ago
LMR c3543627ae fix 2 years ago
LMR 3eadc7fe03 fix 2 years ago
LMR dae813af5b fix 2 years ago
LMR 6a25f9be8a fkx 2 years ago
LMR 396d7cf402 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 479025ecf2 fix 2 years ago
candice 1b0af1f0c9 11 2 years ago
candice 3a7ca3ead8 国籍下拉框修改 2 years ago
Jimmy Liow 51bfadbe4f 航班信息改为必填 2 years ago
candice 54ddeec02d 解决冲突 2 years ago
candice 4e34e194bd 解决冲突 2 years ago
candice 65708169e7 Merge branch 'master' of github.com:hainatravel/information-system into master
# Conflicts:
#	application/third_party/order/views/ah/confirm_order.php
#	application/third_party/order/views/gh/confirm_order.php
2 years ago
candice babd2c3097 电话等内容修改 2 years ago
candice 297c2ea402 电话等内容修改 2 years ago
LMR bef3803745 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 9dfbb11f8d fix 2 years ago
Jimmy Liow 0e5f3e708d 客人信息收集表单优化需求 2 years ago
LMR a9354ae961 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 000fca2deb TODO: 非子节点信息 2 years ago
candice feff834a80 紧急联系人optional删除,必填 2 years ago
LMR 582a46e6f8 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 776b0b6d86 test 2 years ago
candice a7d2eb6c86 国籍选项内容修改 2 years ago
candice bef99e193c Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice f3d202f6b0 国籍选项内容修改 2 years ago
LMR eb244f7cab Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 281b6d0415 add get detail 2 years ago
candice 723deb7019 样式细节修改 2 years ago
candice 7b4605c9fd 新增delete功能 2 years ago
candice 4aaaf80bb5 11 2 years ago
candice e5baebe3cf 11 2 years ago
candice 5f7d2b012a Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice c9040c2411 图片读取修改 2 years ago
LMR 7ba0cb58cc copy 1 2 years ago
LMR 5966f048a4 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 8f105938c3 fix 2 years ago
Lei OT 5725539acf Merge remote-tracking branch 'origin/master' 2 years ago
LMR 03fa80f1c9 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR e829cbeadd fix 2 years ago
candice 2ff5fcea5f 11 2 years ago
candice 05b7dc61ff 11 2 years ago
candice 827d546759 电话地址等内容修改 2 years ago
Lei OT 407b6ccf6a perf: PayPal: 优化 显示 2 years ago
candice 49d3d160f3 下线cookie相关内容,新增google广告代码 2 years ago
candice e8d3d61187 下线cookie相关内容 2 years ago
candice 8e5176b037 下线cookie相关内容 2 years ago
Lei OT 9ef932c148 perf: PayPal: 已完成的pending 2 years ago
YCC 64b4dae2e3 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
YCC aefdcaba02 允许ch和gh的广告重复出现 2 years ago
Jimmy Liow ade5a9d80a 更新客人信息表单机票信息 2 years ago
LMR b77654226d fix 2 years ago
LMR 39e8ef7fad fix 2 years ago
LMR b0089add28 fix 2 years ago
LMR 9b81410398 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 9d024e8436 add gh cache cfg 2 years ago
Lei OT 9b63ffbdca fix: 支付宝线下扫码的记录查询 2 years ago
LMR 7aa376e4ab Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
LMR 2b26461811 add gh_vac cache 2 years ago
赵鹏 5a68e26218 /forms/customize.html修改 2 years ago
赵鹏 00c95a53f9 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 38e1ffbb30 fix 2 years ago
Jimmy Liow 6c850b26bf 好评测试去除详细内容 2 years ago
Jimmy Liow 4712eadd7c 增加测试最新好评数据 2 years ago
赵鹏 66ece67c57 fix 2 years ago
赵鹏 47611d2d89 fix 2 years ago
赵鹏 df82ff0abc Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 9429cf4a27 CT新的预订表单。 2 years ago
candice f57386990c 11 2 years ago
candice 63d6a0a2c5 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 95dac34c4d 人数选择细节修改 2 years ago
Lei OT 31a414ac52 PayPal记录: 默认不显示webhooks的 2 years ago
Jimmy Liow 3b266c537d 更新价格代码测试 2 years ago
candice 2b4bab2f33 11 2 years ago
candice 5ca832448a 11 2 years ago
candice 06ccc62ec6 人数选择细节修改 2 years ago
candice bf72bd6f2f 11 2 years ago
candice fdfad34b1e 11 2 years ago
candice 8fff23a748 人数选择细节修改 2 years ago
candice d8b96f5780 11 2 years ago
candice 05c6e555e1 11 2 years ago
candice 3edb6fc7cf 11 2 years ago
candice 6a722fd2c2 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 835bedd96a 文中线路推荐缩减为4个 2 years ago
赵鹏 4b3556602d Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 6a3ae2369d fix 2 years ago
candice 74e43f5d97 11 2 years ago
candice 93d64398e7 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 2ba4e41e54 11 2 years ago
candice 0f2ade8c1b Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 9ed8b8faae 11 2 years ago
赵鹏 3ea0a71714 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 d3f389e625 精华线路价格默认读取4星价 2 years ago
Lei OT 58b90e4e01 Merge remote-tracking branch 'origin/master' 2 years ago
Lei OT 268bf30cc6 Merge remote-tracking branch 'origin/master' 2 years ago
Lei OT 13983fbc67 perf: 网站支付额退款 2 years ago
Jimmy Liow 2cb5f82ddc GH 表单成人累加规则变更 2 years ago
candice 85fb3c9d8c 11 2 years ago
candice 643a977af5 11 2 years ago
candice c029ec33ed Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 577b8cc578 人数选择修改 2 years ago
Jimmy Liow 47a4763cac Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 445b25721c CH 表单成人累加规则变更 2 years ago
Lei OT 9ed733241e perf: 微信收款记录: 显示来源的APPID 的应用 2 years ago
Lei OT c372f56664 Merge remote-tracking branch 'origin/master' 2 years ago
Lei OT 53d30cc9fd perf: 微信收款记录: 显示来源的APPID 的应用 2 years ago
candice 857ac518ac 人数选择修改 2 years ago
Jimmy Liow 829cf99066 更新儿童人数选择 2 years ago
Jimmy Liow 8e48d62ffc AH 表单人数、天数改版 2 years ago
candice 9c60959461 人数选择修改 2 years ago
Jimmy Liow 1fce62f3be 站外好评只显示审核通过 2 years ago
Jimmy Liow a33d58eb25 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow e52bfb9208 测试站外好评只显示审核通过 2 years ago
candice 2ff1d7298d 头部导航修改 2 years ago
LMR 428f30e17d fix is_series_site 2 years ago
LMR 2217500854 add gh site 2 years ago
Lei OT eb41f05e99 Merge remote-tracking branch 'origin/master' 2 years ago
Lei OT 70083f1de5 perf: PayPal多账户: +Trippest 显示收款的账户 2 years ago
candice 010a598fb9 11 2 years ago
Lei OT 0d8971f8ed Merge remote-tracking branch 'origin/master' 2 years ago
Lei OT c589ada3d1 perf: 支付宝多账户: +Trippest 下载对账单 2 years ago
Jimmy Liow 2ea1785d18 AH CH GH PC端导航自动隐藏 2 years ago
candice 2abb1b26dd 11 2 years ago
candice 53093ce817 11 2 years ago
candice a408bd84e0 11 2 years ago
Lei OT c324da7281 perf: 支付宝多账户: +Trippest 2 years ago
YCC 7a2a073306 ch和gh的广告不检测重复 2 years ago
candice 00de574fbf AH页面右侧模板展示10条反馈 2 years ago
candice 0e19c53664 11 2 years ago
candice 55c225b899 更新2024票种信息 2 years ago
candice 6a17476a7a 11 2 years ago
candice 97a5a93410 11 2 years ago
candice 1bc40ae8ef 更新2024票种信息 2 years ago
Jimmy Liow 07471ce439 Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 08aa0a6cfa 解决广告没有设置链接时页面出错 2 years ago
candice 9f7f1652e2 11 2 years ago
candice 8588acfbb2 11 2 years ago
candice c70217071b 韩国链接修改为 /south-korea 2 years ago
Jimmy Liow 2cf63bab82 广告管理可以应用产品价格代码 2 years ago
Lei OT 3720c0c2cf fix: 微信收款记录字段 2 years ago
Lei OT 8fd2ffd1ed perf: PayPal: 网站直接的收款记录处理, 使用临时表的订单号 2 years ago
candice 72cec5586a 28号V S票售罄 2 years ago
Jimmy Liow 5151fedb39 AH水灯节表单添加票种必选判断 2 years ago
赵鹏 4ec557afcc Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 366f05580b 按人计算的支付规则 2 years ago
candice 71f9e1a942 28号P票售罄 2 years ago
Jimmy Liow cd61f8662b Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 91329d4a0e 全文搜索增加图片链接 2 years ago
candice a4fa5b99d1 11 2 years ago
candice ad633cc7d7 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice daa91e6334 11 2 years ago
赵鹏 09d418d838 fix 2 years ago
赵鹏 6cb671ee0d Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
赵鹏 a044f3de3a 计算总额单独出来,有些分销商的计算非常复杂 2 years ago
candice 0293092eca 文中广告添加ID值 2 years ago
赵鹏 3d25adf592 CT分销商系统的接口文件 2 years ago
candice 83f8351ffe 头部导航日本下链接修改 2 years ago
Jimmy Liow 00a4029054 调整按钮样式使用小屏幕 2 years ago
Jimmy Liow 55e48c2340 修改关键词位置 2 years ago
Jimmy Liow 71fe63bf4a 增加 SQL like 转义处理 2 years ago
Jimmy Liow 5194a9152c 增加转义防止 SQL 出错 2 years ago
Jimmy Liow addfb51185 增加保留查询条件 2 years ago
Jimmy Liow 47c762d26a Merge branch 'master' of github.com:hainatravel/information-system 2 years ago
Jimmy Liow 1a40cb100d 广告增加按类别搜索 2 years ago
candice 6bdc0040c2 11 2 years ago
Jimmy Liow 622ca4878e 代码改为标签 2 years ago
Jimmy Liow 9968607033 更新水灯节售票规则 2 years ago
candice 5e1e2c790b 11 2 years ago
candice 72a6bd7ea6 27号票余量更新 2 years ago
candice 78dd8837aa 添加不跟踪代码rel="nofollow" 2 years ago
candice 8a3692f731 11 2 years ago
candice e63888a938 Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 77aa8962dc 隐藏27号,28号票余量修改 2 years ago
Jimmy Liow 08815eb19d CH 标签表单增加邮箱提示 2 years ago
Jimmy Liow a98879207b CH Newsletter 表单增加邮箱提示 2 years ago
Jimmy Liow 3c88d6eb6a AH 表单标签增加邮箱自动提示 2 years ago
Jimmy Liow d1cb354a61 修改收款通知邮件称呼 2 years ago
Jimmy Liow fea7d60c5b 增加注释 2 years ago
Jimmy Liow eecb2a00e4 信息平台的广告管理新增查询功能 2 years ago
Jimmy Liow 6df816833b 增加关键词搜索 SQL 2 years ago
Jimmy Liow f75d6eb20b 增加搜索广告界面 2 years ago
candice 50c815c6a4 隐藏27号VIP票 2 years ago
Jimmy Liow c672a99566 删除原来多媒体中心入口 2 years ago
candice 52fb360a0a head里新增hotjar跟踪JS 2 years ago
candice 69b955b5f3 删除图片尺寸代码 2 years ago
Jimmy Liow a3b43eb9e5 修改 JS 加载位置 2 years ago
Jimmy Liow 2bf54c2485 AH Newsletter 增加邮箱提示 2 years ago
Lei OT d75483b0ac perf: PayPal记录按状态列表 2 years ago
candice b3e1eb2f44 11 2 years ago
candice b13862fdb5 删除广告标题DIV 2 years ago
candice 67a424f9af 11 2 years ago
candice 1af40a150c 文字修改 2 years ago
candice 0b8e302e88 底部模板链接错误修改 2 years ago
candice 0070c869d5 11 2 years ago
candice fe3cb52cd5 取消酒店选项内容 2 years ago
candice c0bcca2a9d 11 2 years ago
candice e69666f5d4 11 2 years ago
candice bf0328a78b 11 2 years ago
candice 3a30813ebe Merge branch 'master' of github.com:hainatravel/information-system into master 2 years ago
candice 319bde188c 11 2 years ago
Jimmy Liow 2924146a95 页面向下滑动时不展示头部导航,向上滑动时出现头部导航 2 years ago
candice fb50e1206f 11 2 years ago
candice 3923affebf 11 2 years ago
candice c4222b5443 表单恢复取消酒店选择 2 years ago
YCC 0eb80276ea bug fix 2 years ago
YCC b68c55f432 fix bug 2 years ago
YCC bd425ee8da AH页面的广告推荐取消重复检测 2 years ago

@ -6,8 +6,8 @@ on:
branches: [ master ] branches: [ master ]
jobs: jobs:
gh-win-us-deploy: gh-win-cn-deploy:
name: 🎉 Deploy InfoSys to US name: 🎉 Deploy InfoSys to CN
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: 🚚 Get latest code - name: 🚚 Get latest code
@ -16,13 +16,14 @@ jobs:
- name: 📂 Sync files to CHT - name: 📂 Sync files to CHT
uses: SamKirkland/FTP-Deploy-Action@v4.3.4 uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with: with:
server: ${{ secrets.US_FTP_SERVER }} server: ${{ secrets.CN_FTP_SERVER }}
username: ${{ secrets.US_FTP_USER }} username: ${{ secrets.CN_FTP_USER }}
password: ${{ secrets.US_FTP_PASSWORD }} password: ${{ secrets.CN_FTP_PASSWORD }}
port: ${{ secrets.US_FTP_PORT }} port: ${{ secrets.CN_FTP_PORT }}
local-dir: ./ local-dir: ./
server-dir: /information-system/ server-dir: /wwwroot/origin-cht.mycht.cn/
# dry-run: true # dry-run: true
# log-level: verbose
exclude: | exclude: |
**/.git* **/.git*
**/.git*/** **/.git*/**
@ -36,7 +37,16 @@ jobs:
*.exe *.exe
*.docx *.docx
.ftp-deploy-sync-state.json .ftp-deploy-sync-state.json
- name: 📂 Sync files to CT
gh-win-us-deploy:
needs: gh-win-cn-deploy
name: 🎉 Deploy InfoSys to US
runs-on: ubuntu-latest
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v3
- name: 📂 Sync files to CHT
uses: SamKirkland/FTP-Deploy-Action@v4.3.4 uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with: with:
server: ${{ secrets.US_FTP_SERVER }} server: ${{ secrets.US_FTP_SERVER }}
@ -44,7 +54,7 @@ jobs:
password: ${{ secrets.US_FTP_PASSWORD }} password: ${{ secrets.US_FTP_PASSWORD }}
port: ${{ secrets.US_FTP_PORT }} port: ${{ secrets.US_FTP_PORT }}
local-dir: ./ local-dir: ./
server-dir: /origin-ct.mycht.cn/ server-dir: /information-system/
# dry-run: true # dry-run: true
exclude: | exclude: |
**/.git* **/.git*
@ -59,26 +69,16 @@ jobs:
*.exe *.exe
*.docx *.docx
.ftp-deploy-sync-state.json .ftp-deploy-sync-state.json
- name: 📂 Sync files to CT
gh-win-cn-deploy:
needs: gh-win-us-deploy
name: 🎉 Deploy InfoSys to CN
runs-on: ubuntu-latest
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v3
- name: 📂 Sync files to CHT
uses: SamKirkland/FTP-Deploy-Action@v4.3.4 uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with: with:
server: ${{ secrets.CN_FTP_SERVER }} server: ${{ secrets.US_FTP_SERVER }}
username: ${{ secrets.CN_FTP_USER }} username: ${{ secrets.US_FTP_USER }}
password: ${{ secrets.CN_FTP_PASSWORD }} password: ${{ secrets.US_FTP_PASSWORD }}
port: ${{ secrets.CN_FTP_PORT }} port: ${{ secrets.US_FTP_PORT }}
local-dir: ./ local-dir: ./
server-dir: /wwwroot/origin-cht.mycht.cn/ server-dir: /origin-ct.mycht.cn/
# dry-run: true # dry-run: true
# log-level: verbose
exclude: | exclude: |
**/.git* **/.git*
**/.git*/** **/.git*/**
@ -93,6 +93,8 @@ jobs:
*.docx *.docx
.ftp-deploy-sync-state.json .ftp-deploy-sync-state.json
hn-notification: hn-notification:
needs: gh-win-cn-deploy needs: gh-win-cn-deploy
name: 🔔 Send notificaiton name: 🔔 Send notificaiton

8
.gitignore vendored

@ -1,6 +1,7 @@
.idea .idea
.phpintel .phpintel
.*.json.bak /info.php
.*.json.bak
.ftp-deploy-sync-state.json .ftp-deploy-sync-state.json
.svn/* .svn/*
*/logs/log* */logs/log*
@ -9,6 +10,7 @@
/kcfinder/cache/* /kcfinder/cache/*
*/cache/* */cache/*
/author/document/* /author/document/*
*/settlement_files/*
*/statement_files/* */statement_files/*
*/paypal_activities/* */paypal_activities/*
/author/document/* /author/document/*
@ -16,4 +18,4 @@
/application/config/database.php /application/config/database.php

@ -39,9 +39,12 @@ switch ($_SERVER['SERVER_NAME']) {
case 'gh-int.mycht.cn': case 'gh-int.mycht.cn':
$base_url = 'https://int.mycht.cn'; $base_url = 'https://int.mycht.cn';
break; break;
case 'int.mycht.cn': case 'int.mycht.cn': // lmr
$base_url = 'https://int.mycht.cn'; $base_url = 'https://int.mycht.cn';
break; break;
case 'gm.mycht.cn': // lmr
$base_url = 'https://gm.mycht.cn';
break;
case 'origin-gh.mycht.cn': case 'origin-gh.mycht.cn':
$base_url = 'https://gh.mycht.cn'; $base_url = 'https://gh.mycht.cn';
break; break;
@ -392,11 +395,17 @@ $config['site'] = array(
'cht' => array('site_code' => 'cht', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => 'https://images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin', 'sw', 'zl', 'wbl', 'yqw', 'lf', 'zhm', 'pkl'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,v,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,zl,syt,gavin,zm,htc,yqw,bhn,lmj,wbl,yqw,LYY,zhm,si'), 'cht' => array('site_code' => 'cht', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => 'https://images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin', 'sw', 'zl', 'wbl', 'yqw', 'lf', 'zhm', 'pkl'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,v,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,zl,syt,gavin,zm,htc,yqw,bhn,lmj,wbl,yqw,LYY,zhm,si'),
'ch' => array('site_code' => 'ch', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => 'https://images.chinahighlights.com', 'site_authors' => array('TDJ', 'ycc'), 'site_user' => ',ycc,'), 'ch' => array('site_code' => 'ch', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => 'https://images.chinahighlights.com', 'site_authors' => array('TDJ', 'ycc'), 'site_user' => ',ycc,'),
'gm' => array('site_code' => 'gm', 'site_id' => 22, 'site_lgc' => '4', 'site_url' => 'https://www.chinarundreisen.com', 'site_image_url' => '//bilder.chinarundreisen.com', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'), 'gm' => array('site_code' => 'gm', 'site_id' => 22, 'site_lgc' => '4', 'site_url' => 'https://www.chinarundreisen.com', 'site_image_url' => '//bilder.chinarundreisen.com', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'),
'gh_gm' => array('site_code' => 'gh_gm', 'site_id' => 178, 'site_lgc' => '4', 'site_url' => 'https://www.globalhighlights.de', 'site_image_url' => '//www.globalhighlights.de', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'),
'vc' => array('site_code' => 'vc', 'site_id' => 30, 'site_lgc' => '5', 'site_url' => 'https://www.voyageschine.com', 'site_image_url' => '//images.voyageschine.com', 'site_authors' => array('JE', 'kq', 'lya', 'lyz', 'zyh'), 'site_user' => ',ycc,lmr, zyh,JE,htc,kq,lya,bhn,Tony,zyh,B,J,lyz,LYY,'), 'vc' => array('site_code' => 'vc', 'site_id' => 30, 'site_lgc' => '5', 'site_url' => 'https://www.voyageschine.com', 'site_image_url' => '//images.voyageschine.com', 'site_authors' => array('JE', 'kq', 'lya', 'lyz', 'zyh'), 'site_user' => ',ycc,lmr, zyh,JE,htc,kq,lya,bhn,Tony,zyh,B,J,lyz,LYY,'),
'gh_vc' => array('site_code' => 'gh_vc', 'site_id' => 180, 'site_lgc' => '5', 'site_url' => 'https://www.globalhighlights.fr', 'site_image_url' => '//www.globalhighlights.fr', 'site_authors' => array('JE', 'kq', 'lya', 'lyz', 'zyh'), 'site_user' => ',ycc,lmr, zyh,JE,htc,kq,lya,bhn,Tony,zyh,B,J,lyz,LYY,'),
'jp' => array('site_code' => 'jp', 'site_id' => 88, 'site_lgc' => '3', 'site_url' => 'https://www.arachina.com', 'site_image_url' => '//images.arachina.com', 'site_authors' => array('hql', 'LLM', 'SHX', 'lmr', 'zyh', 'zb'), 'site_user' => ',ycc,lmr, zyh,hql,LLM,SHX,htc,zpl,Tony,zyh,J,B,zb,LYY,'), 'jp' => array('site_code' => 'jp', 'site_id' => 88, 'site_lgc' => '3', 'site_url' => 'https://www.arachina.com', 'site_image_url' => '//images.arachina.com', 'site_authors' => array('hql', 'LLM', 'SHX', 'lmr', 'zyh', 'zb'), 'site_user' => ',ycc,lmr, zyh,hql,LLM,SHX,htc,zpl,Tony,zyh,J,B,zb,LYY,'),
'gh_jp' => array('site_code' => 'gh_jp', 'site_id' => 179, 'site_lgc' => '3', 'site_url' => 'https://www.globalhighlights.jp', 'site_image_url' => '//www.globalhighlights.jp', 'site_authors' => array('hql', 'LLM', 'SHX', 'lmr', 'zyh', 'zb'), 'site_user' => ',ycc,lmr, zyh,hql,LLM,SHX,htc,zpl,Tony,zyh,J,B,zb,LYY,'),
'vac' => array('site_code' => 'vac', 'site_id' => 95, 'site_lgc' => '6', 'site_url' => 'https://www.viaje-a-china.com', 'site_image_url' => '//imagenes.viaje-a-china.com', 'site_authors' => array('I', 'cyt', 'lmr', 'zyh', 'LLM'), 'site_user' => ',ycc,lmr, zyh,I,cyt,htc,bhn,Tony,zyh,B,J,LLM,LYY,'), 'vac' => array('site_code' => 'vac', 'site_id' => 95, 'site_lgc' => '6', 'site_url' => 'https://www.viaje-a-china.com', 'site_image_url' => '//imagenes.viaje-a-china.com', 'site_authors' => array('I', 'cyt', 'lmr', 'zyh', 'LLM'), 'site_user' => ',ycc,lmr, zyh,I,cyt,htc,bhn,Tony,zyh,B,J,LLM,LYY,'),
'gh_vac' => array('site_code' => 'gh_vac', 'site_id' => 181, 'site_lgc' => '6', 'site_url' => 'https://www.globalhighlights.es', 'site_image_url' => '//www.globalhighlights.es', 'site_authors' => array('I', 'cyt', 'lmr', 'zyh', 'LLM'), 'site_user' => ',ycc,lmr, zyh,I,cyt,htc,bhn,Tony,zyh,B,J,LLM,LYY,'),
'it' => array('site_code' => 'it', 'site_id' => 168, 'site_lgc' => '8', 'site_url' => 'https://www.viaggio-in-cina.it', 'site_image_url' => '//images.viaggio-in-cina.it', 'site_authors' => array('LZY', 'ZQQ', 'lmr', 'zyh'), 'site_user' => ',ycc,lmr, zyh,LZY,htc,ZQQ,Tony,zyh,B,J,LYY,'), 'it' => array('site_code' => 'it', 'site_id' => 168, 'site_lgc' => '8', 'site_url' => 'https://www.viaggio-in-cina.it', 'site_image_url' => '//images.viaggio-in-cina.it', 'site_authors' => array('LZY', 'ZQQ', 'lmr', 'zyh'), 'site_user' => ',ycc,lmr, zyh,LZY,htc,ZQQ,Tony,zyh,B,J,LYY,'),
'gh_it' => array('site_code' => 'gh_it', 'site_id' => 183, 'site_lgc' => '8', 'site_url' => 'https://www.globalhighlights.it', 'site_image_url' => '//www.globalhighlights.it', 'site_authors' => array('LZY', 'ZQQ', 'lmr', 'zyh'), 'site_user' => ',ycc,lmr, zyh,LZY,htc,ZQQ,Tony,zyh,B,J,LYY,'),
'ru' => array('site_code' => 'ru', 'site_id' => 102, 'site_lgc' => '7', 'site_url' => 'https://www.chinahighlights.ru', 'site_image_url' => '//images.chinahighlights.ru', 'site_authors' => array('xjj', 'zyy'), 'site_user' => ',ycc,lmr, zyh,xjj,htc,DX,zyy,bhn,Tony,zyh,B,J,LYY,'), 'ru' => array('site_code' => 'ru', 'site_id' => 102, 'site_lgc' => '7', 'site_url' => 'https://www.chinahighlights.ru', 'site_image_url' => '//images.chinahighlights.ru', 'site_authors' => array('xjj', 'zyy'), 'site_user' => ',ycc,lmr, zyh,xjj,htc,DX,zyy,bhn,Tony,zyh,B,J,LYY,'),
'gh_ru' => array('site_code' => 'gh_ru', 'site_id' => 182, 'site_lgc' => '7', 'site_url' => 'https://www.globalhighlights.ru', 'site_image_url' => '//www.globalhighlights.ru', 'site_authors' => array('xjj', 'zyy'), 'site_user' => ',ycc,lmr, zyh,xjj,htc,DX,zyy,bhn,Tony,zyh,B,J,LYY,'),
'wt' => array('site_code' => 'wt', 'site_id' => 172, 'site_lgc' => '2', 'site_url' => 'https://www.iiiyooo.com', 'site_image_url' => '', 'site_authors' => array('ylh', 'lfj', 'wx', 'lzh', 'shw', 'lx'), 'site_user' => ',ycc,lmr, zyh,ylh,lfj,wx,lzh,shw,lx,bhn,B,J,'), 'wt' => array('site_code' => 'wt', 'site_id' => 172, 'site_lgc' => '2', 'site_url' => 'https://www.iiiyooo.com', 'site_image_url' => '', 'site_authors' => array('ylh', 'lfj', 'wx', 'lzh', 'shw', 'lx'), 'site_user' => ',ycc,lmr, zyh,ylh,lfj,wx,lzh,shw,lx,bhn,B,J,'),
'tbt' => array('site_code' => 'tbt', 'site_id' => 169, 'site_lgc' => '1', 'site_url' => 'https://www.tibettravel.info', 'site_image_url' => '/images', 'site_authors' => array('wj', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,sfx,J,ZP,'), 'tbt' => array('site_code' => 'tbt', 'site_id' => 169, 'site_lgc' => '1', 'site_url' => 'https://www.tibettravel.info', 'site_image_url' => '/images', 'site_authors' => array('wj', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,sfx,J,ZP,'),
'sht' => array('site_code' => 'sht', 'site_id' => 96, 'site_lgc' => '1', 'site_url' => 'https://www.shanghaihighlights.com', 'site_image_url' => '//images.shanghaihighlights.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,vz,sfx,J,ZP,LYY,'), 'sht' => array('site_code' => 'sht', 'site_id' => 96, 'site_lgc' => '1', 'site_url' => 'https://www.shanghaihighlights.com', 'site_image_url' => '//images.shanghaihighlights.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,vz,sfx,J,ZP,LYY,'),
@ -420,12 +429,28 @@ $config['site'] = array(
//静态文件生成路径 //静态文件生成路径
$config['cache']['jp']['cache_path'] = 'D:\wwwcache-intl\arachina.com'; $config['cache']['jp']['cache_path'] = 'D:\wwwcache-intl\arachina.com';
$config['cache']['gm']['cache_path'] = 'C:\Dropbox\wwwcache\chinarundreisen.com'; $config['cache']['gm']['cache_path'] = 'D:\wwwcache-gm\chinarundreisen.com';
$config['cache']['vc']['cache_path'] = 'D:\wwwcache-intl\voyageschine.com'; $config['cache']['vc']['cache_path'] = 'D:\wwwcache-intl\voyageschine.com';
$config['cache']['vac']['cache_path'] = 'D:\wwwcache-intl\viaje-a-china.com'; $config['cache']['vac']['cache_path'] = 'D:\wwwcache-intl\viaje-a-china.com';
$config['cache']['ru']['cache_path'] = 'D:\wwwcache-intl\chinahighlights.ru'; $config['cache']['ru']['cache_path'] = 'D:\wwwcache-intl\chinahighlights.ru';
$config['cache']['it']['cache_path'] = 'D:\wwwcache-intl\viaggio-in-cina.it'; $config['cache']['it']['cache_path'] = 'D:\wwwcache-intl\viaggio-in-cina.it';
$config['cache']['gh_jp']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.jp';
$config['cache']['gh_gm']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.de';
$config['cache']['gh_vc']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.fr';
$config['cache']['gh_vac']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.es';
$config['cache']['gh_ru']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.ru';
$config['cache']['gh_it']['cache_path'] = 'D:\wwwcache-intl\globalhighlights.it';
/*
globalhighlights.jp
globalhighlights.de
globalhighlights.fr
globalhighlights.es
globalhighlights.ru
globalhighlights.it
*/
//静态文件站点域名 //静态文件站点域名
$config['cache']['jp']['site_url'] = 'https://www.arachina.com'; $config['cache']['jp']['site_url'] = 'https://www.arachina.com';
$config['cache']['gm']['site_url'] = 'https://www.chinarundreisen.com'; $config['cache']['gm']['site_url'] = 'https://www.chinarundreisen.com';
@ -434,6 +459,13 @@ $config['cache']['vac']['site_url'] = 'https://www.viaje-a-china.com';
$config['cache']['ru']['site_url'] = 'https://www.chinahighlights.ru'; $config['cache']['ru']['site_url'] = 'https://www.chinahighlights.ru';
$config['cache']['it']['site_url'] = 'https://www.viaggio-in-cina.it'; $config['cache']['it']['site_url'] = 'https://www.viaggio-in-cina.it';
$config['cache']['gh_jp']['site_url'] = 'https://www.globalhighlights.jp';
$config['cache']['gh_gm']['site_url'] = 'https://www.globalhighlights.de';
$config['cache']['gh_vc']['site_url'] = 'https://www.globalhighlights.fr';
$config['cache']['gh_vac']['site_url'] = 'https://www.globalhighlights.es';
$config['cache']['gh_ru']['site_url'] = 'https://www.globalhighlights.ru';
$config['cache']['gh_it']['site_url'] = 'https://www.globalhighlights.it';
//静态文件更新接口 //静态文件更新接口
$config['cache']['jp']['cache_api'] = '/info.php/information/update_cache/'; $config['cache']['jp']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gm']['cache_api'] = '/info.php/information/update_cache/'; $config['cache']['gm']['cache_api'] = '/info.php/information/update_cache/';
@ -442,6 +474,13 @@ $config['cache']['vac']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['ru']['cache_api'] = '/info.php/information/update_cache/'; $config['cache']['ru']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['it']['cache_api'] = '/info.php/information/update_cache/'; $config['cache']['it']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_jp']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_gm']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_vc']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_vac']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_ru']['cache_api'] = '/info.php/information/update_cache/';
$config['cache']['gh_it']['cache_api'] = '/info.php/information/update_cache/';
//静态文件更新接口参数 //静态文件更新接口参数
$config['cache']['jp']['cache_api_para'] = 'cache_url'; $config['cache']['jp']['cache_api_para'] = 'cache_url';
$config['cache']['gm']['cache_api_para'] = 'cache_url'; $config['cache']['gm']['cache_api_para'] = 'cache_url';
@ -450,6 +489,13 @@ $config['cache']['vac']['cache_api_para'] = 'cache_url';
$config['cache']['ru']['cache_api_para'] = 'cache_url'; $config['cache']['ru']['cache_api_para'] = 'cache_url';
$config['cache']['it']['cache_api_para'] = 'cache_url'; $config['cache']['it']['cache_api_para'] = 'cache_url';
$config['cache']['gh_jp']['cache_api_para'] = 'cache_url';
$config['cache']['gh_gm']['cache_api_para'] = 'cache_url';
$config['cache']['gh_vc']['cache_api_para'] = 'cache_url';
$config['cache']['gh_vac']['cache_api_para'] = 'cache_url';
$config['cache']['gh_ru']['cache_api_para'] = 'cache_url';
$config['cache']['gh_it']['cache_api_para'] = 'cache_url';
//本地测试用 - lmr //本地测试用 - lmr
if (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == '202.103.68.62:9999') { if (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == '202.103.68.62:9999') {
$config['site']['jp']['site_url'] = 'http://202.103.68.62:9093'; $config['site']['jp']['site_url'] = 'http://202.103.68.62:9093';
@ -719,7 +765,7 @@ $config['css_source_ts'] = 'https://www.trainspread.com/css/bootstrap.min.css';
//静态文件生成路径 //静态文件生成路径
$config['cache']['jp']['cache_path'] = 'D:\wwwcache-intl\arachina.com'; $config['cache']['jp']['cache_path'] = 'D:\wwwcache-intl\arachina.com';
$config['cache']['gm']['cache_path'] = 'C:\Dropbox\wwwcache\chinarundreisen.com'; $config['cache']['gm']['cache_path'] = 'D:\wwwcache-gm\chinarundreisen.com';
$config['cache']['vc']['cache_path'] = 'D:\wwwcache-intl\voyageschine.com'; $config['cache']['vc']['cache_path'] = 'D:\wwwcache-intl\voyageschine.com';
$config['cache']['vac']['cache_path'] = 'D:\wwwcache-intl\viaje-a-china.com'; $config['cache']['vac']['cache_path'] = 'D:\wwwcache-intl\viaje-a-china.com';
$config['cache']['ru']['cache_path'] = 'D:\wwwcache-intl\chinahighlights.ru'; $config['cache']['ru']['cache_path'] = 'D:\wwwcache-intl\chinahighlights.ru';
@ -1027,6 +1073,12 @@ $config['templates_gm'] = array(
'空白模板' => 'none', '空白模板' => 'none',
); );
//德语信息模板
$config['templates_gh'] = array(
'通用内容模板' => 'guide_info_detail',
'带导航' => 'guide_with_nav'
);
// CHT 信息模板 // CHT 信息模板
$config['templates_cht'] = array( $config['templates_cht'] = array(
'通用内容模板' => 'guide_info_detail', '通用内容模板' => 'guide_info_detail',
@ -1088,11 +1140,13 @@ $config['templates_ah'] = array(
// 出境游网站模板 // 出境游网站模板
$config['templates_pgr'] = array( $config['templates_pgr'] = array(
'空白模板' => 'guide_info_detail', '导航模板' => 'culture_info_detail_with_category', '空白模板' => 'guide_info_detail',
'导航模板' => 'culture_info_detail_with_category',
); );
// 国际火车网站模板 // 国际火车网站模板
$config['templates_ts'] = array( $config['templates_ts'] = array(
'空白模板' => 'guide_info_detail', '信息导航模板' => 'train_series_with_category', '空白模板' => 'guide_info_detail',
'信息导航模板' => 'train_series_with_category',
); );
//翰特产品类型,Information控制器的get_products函数有直接调用在这里增加了信息需要去控制器写相关操作代码 //翰特产品类型,Information控制器的get_products函数有直接调用在这里增加了信息需要去控制器写相关操作代码

@ -158,7 +158,7 @@ class Cache extends CI_Controller
$file_temp = str_replace('###', '', $file_temp); $file_temp = str_replace('###', '', $file_temp);
$path_temp = str_replace($this->dir, '', $dir); $path_temp = str_replace($this->dir, '', $dir);
$url_temp = $this->current_domain . $path_temp . '/' . $file_temp; $url_temp = $this->current_domain . $path_temp . '/' . $file_temp;
$url_temp = str_replace('index.htm', '', $url_temp); $url_temp = str_replace('/index.htm', '/', $url_temp);
$file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f")); $file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f"));
$encode = mb_detect_encoding($url_temp, array('ASCII', 'GBK', 'ISO-8859-1', 'UTF-8')); $encode = mb_detect_encoding($url_temp, array('ASCII', 'GBK', 'ISO-8859-1', 'UTF-8'));

@ -0,0 +1,291 @@
<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
class infofix extends CI_Controller
{
public $site_code = '';
public function __construct()
{
parent::__construct();
$this->load->model('Information_model');
$this->load->model('infoContents_model');
$this->load->model('infoMetas_model');
$this->load->model('logs_model');
$this->site_code = $this->input->get('site_code') ? $this->input->get('site_code') : $this->config->item('site_code');
header('Access-Control-Allow-Origin: *');
}
/**
* 根据关键词搜索信息
*/
public function list_info_by_keys()
{
// 防止超时
set_time_limit(0);
// json参数
$site = $this->input->get_post('site');
$keys = $this->input->get_post('keys');
$key_arr = explode(',', $keys);
// 容错
if (
empty($site) ||
empty($keys) ||
mb_stripos($keys, '/') === false
) {
echo json_encode(array());
return false;
}
// 关键字信息
$rs = $this->Information_model->list_by_keywords($site, $key_arr);
// 调整数据
foreach ($rs as $info) {
$key_with_content = array();
foreach ($key_arr as $key) {
// 链接
$sub_url = mb_stripos($info->ic_url, $key) !== false ? $info->ic_url : '';
if ($sub_url) {
$sub_url = str_replace($key, '@@@' . $key . '@@@', $sub_url);
$sub_url = explode('@@@', $sub_url);
}
$limitStr = 100;
// 信息内容
$pos_content = 0;
$pos_content = mb_stripos($info->ic_content, $key);
$sub_content = array();
while ($pos_content) {
$_str = '[...' . mb_substr($info->ic_content, $pos_content - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
$_str = explode('@@@', $_str);
array_push($sub_content, $_str);
$pos_content = mb_stripos($info->ic_content, $key, $pos_content + mb_strlen($key));
}
// amp_json
$sub_content2 = array();
if ($info->amp_json) {
$pos_content2 = 0;
$pos_content2 = mb_stripos($info->amp_json, $key);
while ($pos_content2) {
$_str = '[...' . mb_substr($info->amp_json, $pos_content2 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
$_str = explode('@@@', $_str);
array_push($sub_content2, $_str);
$pos_content2 = mb_stripos($info->amp_json, $key, $pos_content2 + mb_strlen($key));
}
}
// amp_body
$sub_content3 = array();
if ($info->amp_body) {
$pos_content3 = 0;
$pos_content3 = mb_stripos($info->amp_body, $key);
while ($pos_content3) {
$_str = '[...' . mb_substr($info->amp_body, $pos_content3 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
$_str = explode('@@@', $_str);
array_push($sub_content3, $_str);
$pos_content3 = mb_stripos($info->amp_body, $key, $pos_content3 + mb_strlen($key));
}
}
if ($sub_url != '' || count($sub_content) != 0 || count($sub_content2) != 0 || count($sub_content3) != 0) {
array_push(
$key_with_content,
array(
'key' => $key,
'sub_url' => $sub_url,
'sub_content' => $sub_content,
'sub_json' => $sub_content2,
'sub_body' => $sub_content3,
)
);
}
}
$info->ic_content = $key_with_content;
unset($info->amp_json);
unset($info->amp_body);
}
echo json_encode($rs);
}
/**
* 更新含有关键的信息
*/
public function update_info_by_keys()
{
// json参数
$site = $this->input->get_post('site');
$keys = $this->input->get_post('keys');
$keyArr = explode('@', $keys); // ic_id@oldurl@newurl@is_id
//sleep(2);
//echo ($keys);
//return true;
// 容错1
if (
empty($site) ||
count($keyArr) != 4 ||
mb_stripos($keys, '/') === false ||
mb_stripos($keys, 'undefined') !== false ||
mb_stripos($keys, 'null') !== false ||
mb_stripos($keys, '@@') !== false ||
mb_stripos($keys, '@ @') !== false
) {
echo json_encode(array('err' => '容错1'));
return false;
}
// 参数解析
$ic_id = $keyArr[0];
$oldStr = $keyArr[1];
$newStr = $keyArr[2];
$is_id = $keyArr[3];
// 容错2
if (
empty($ic_id) ||
empty($is_id) ||
empty($newStr) ||
empty($oldStr) ||
mb_stripos($newStr, '/') === false ||
mb_stripos($oldStr, '/') === false
) {
echo json_encode(array('err' => '容错2'));
return false;
}
// ic_content
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
if (!empty($ic)) {
$ic->ic_content = str_ireplace($oldStr, $newStr, $ic->ic_content);
$this->infoContents_model->force_update($ic_id, $ic->ic_content);
$ic->ic_url = str_ireplace($oldStr, $newStr, $ic->ic_url);
$this->infoContents_model->force_update_url($ic_id, $ic->ic_url);
}
// amp_json
$meta = $this->infoMetas_model->get($ic_id, 'AMP_JSON');
if (!empty($meta)) {
$meta = str_ireplace($oldStr, $newStr, $meta);
$this->infoMetas_model->update($ic_id, 'AMP_JSON', $meta);
}
// amp_body_pc
$meta = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC');
if (!empty($meta)) {
$meta = str_ireplace($oldStr, $newStr, $meta);
$this->infoMetas_model->update($ic_id, 'AMP_BODY_PC', $meta);
}
echo json_encode($keyArr);
}
/**
* 无条件获取信息内容
* @param mixed $ic_id
*/
public function get_by_icid($ic_id)
{
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
$json = json_decode($this->infoMetas_model->get($ic_id, 'AMP_JSON'));
$use = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC_STATUS');
if ($ic) {
echo json_encode(
array(
'state' => 0,
'ic_content' => $ic->ic_content,
'pc_use' => $use,
'json' => $json,
)
);
} else {
echo json_encode(
array(
'state' => -1,
'msg' => 'not content by ' . $ic_id,
)
);
}
}
/**
* 无条件更新信息内容(上线前内容)
*/
public function update_by_icid()
{
$ic_id = $this->input->get_post('ic_id');
$ic_content = $this->input->get_post('ic_content');
$this->infoContents_model->force_update($ic_id, $ic_content);
}
/**
* 列举使用旧版构建工具的信息,用于批量替换更新。
* @param mixed $site
*/
public function list_use_hb($site)
{
$rs = $this->infoContents_model->list_use_hb($site);
echo json_encode($rs);
}
/**
* 转化旧版构建工具数据(上线前的准备)
* @param mixed $ic_id
*/
public function migrate_hb($ic_id, $dev = 'prod')
{
// 本地测试参数
$api = 'https://hmk.arachina.com/beta/3733/server_render2';
if ($dev == 'dev') {
$api = 'http://127.0.0.1:3733/server_render2';
sleep(2);
}
// 请求api
$json = $this->infoMetas_model->get($ic_id, 'AMP_JSON');
if (!empty($json)) {
// 请求转化服务器
$post_data = 'json=' . urlencode($json);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止直接显示获取的内容
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$curl_rs = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($curl_rs && ($httpCode == 200 || $httpCode == 201)) {
// 先备份
$is = $this->infoContents_model->get_isid_by_icid($ic_id);
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
$this->logs_model->backup($is->is_id, $ic->ic_content);
// 移除外部包裹标签
$curl_rs = str_replace(array('<my_lmr_tpl>', '</my_lmr_tpl>'), '', $curl_rs);
// 强制更新信息内容
$this->infoContents_model->force_update($ic_id, $curl_rs);
echo json_encode(array('status' => 1));
} else {
echo json_encode(array('status' => -1, 'msg' => 'err1'));
}
} else {
echo json_encode(array('status' => -1, 'msg' => 'err2'));
}
}
}
//end of infofix

File diff suppressed because it is too large Load Diff

@ -77,7 +77,7 @@ function is_series_site()
{ {
$CI = &get_instance(); $CI = &get_instance();
$sitecode = $CI->config->item('site_code'); $sitecode = $CI->config->item('site_code');
if ($sitecode == 'vc' || $sitecode == 'ru' || $sitecode == 'jp' || $sitecode == 'vac' || $sitecode == 'it') { if (in_array($sitecode, array('jp', 'vc', 'vac', 'ru', 'it', 'gh_jp', 'gh_vc', 'gh_vac', 'gh_ru', 'gh_it', 'gh_gm', 'gm'))) {
return true; return true;
} else { } else {
return false; return false;
@ -103,7 +103,7 @@ function is_mobile_first()
{ {
$CI = &get_instance(); $CI = &get_instance();
$sitecode = $CI->config->item('site_code'); $sitecode = $CI->config->item('site_code');
if ($sitecode == 'ch' || $sitecode == 'ah' || $sitecode=='chinatravel' || $sitecode == 'gh' || $sitecode=='shanghai') { if ($sitecode == 'ch' || $sitecode == 'ah' || $sitecode == 'chinatravel' || $sitecode == 'gh' || $sitecode == 'shanghai') {
return true; return true;
} else { } else {
return false; return false;
@ -222,7 +222,7 @@ function get_task_count_by_status()
function get_author_photo($author_code_id = false) function get_author_photo($author_code_id = false)
{ {
$CI = &get_instance(); $CI = &get_instance();
$root_url = '';//'http://data.chtcdn.com'; $root_url = ''; //'http://data.chtcdn.com';
$avatar = $root_url . '/css/images/avatar.jpg'; $avatar = $root_url . '/css/images/avatar.jpg';
if ($author_code_id && is_numeric($author_code_id)) { if ($author_code_id && is_numeric($author_code_id)) {
$CI->load->model('Infoauthors_model'); $CI->load->model('Infoauthors_model');
@ -237,7 +237,7 @@ function get_author_photo($author_code_id = false)
//补全图片路径 //补全图片路径
function get_photo_url($photo) function get_photo_url($photo)
{ {
$root_url = '';//'http://data.chtcdn.com'; $root_url = ''; //'http://data.chtcdn.com';
if ($photo == '') { if ($photo == '') {
$avatar = $root_url . '/css/images/uploadPic.jpg'; $avatar = $root_url . '/css/images/uploadPic.jpg';
} else { } else {
@ -275,7 +275,8 @@ function show_page($page)
} }
$html = ''; $html = '';
if ($nowview > 1) $befor--; if ($nowview > 1)
$befor--;
if ($pageSize <= $total) { if ($pageSize <= $total) {
for ($i = $befor; $i <= $after; $i++) { for ($i = $befor; $i <= $after; $i++) {
if ($i == $currentPage) { if ($i == $currentPage) {
@ -321,11 +322,11 @@ function GET_HTTP($url, $data = '', $method = 'GET')
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
if (isset($_SERVER['HTTP_USER_AGENT'])) { // if (isset($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT']; // $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
} else { // } else {
$HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'; $HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; curl) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36';
} // }
curl_setopt($curl, CURLOPT_USERAGENT, $HTTP_USER_AGENT); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_USERAGENT, $HTTP_USER_AGENT); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
@ -338,7 +339,7 @@ function GET_HTTP($url, $data = '', $method = 'GET')
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作 $tmpInfo = curl_exec($curl); // 执行操作
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($httpCode >= 400) {//页面状态如果大于400说明页面打不开 if ($httpCode >= 400) { //页面状态如果大于400说明页面打不开
log_message('error', " curl {$httpCode} {$url} "); log_message('error', " curl {$httpCode} {$url} ");
return false; return false;
} }
@ -371,7 +372,8 @@ function compress_css($buffer)
} }
//把临时多媒体中心预览图片地址替换为网前地址 //把临时多媒体中心预览图片地址替换为网前地址
function replace_image_url($ic_content){ function replace_image_url($ic_content)
{
$CI = &get_instance(); $CI = &get_instance();
return str_replace($CI->config->item('media_image_url'), $CI->config->item('site_image_url'),$ic_content); return str_replace($CI->config->item('media_image_url'), $CI->config->item('site_image_url'), $ic_content);
} }

@ -6,41 +6,45 @@ if (!defined('BASEPATH'))
* AMP的相关方法 * AMP的相关方法
*/ */
class Amplib { class Amplib
{
var $CI; var $CI;
public function __construct() { public function __construct()
$this->CI = & get_instance(); {
$this->CI = &get_instance();
$this->CI->load->model('Information_model'); $this->CI->load->model('Information_model');
$this->CI->load->model('InfoMetas_model'); $this->CI->load->model('InfoMetas_model');
$this->CI->load->model('Logs_model'); $this->CI->load->model('Logs_model');
} }
public function edit($ic_id) { public function edit($ic_id)
{
$data = array(); $data = array();
$data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id); $data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id);
if ($data['information'] == FALSE) { if ($data['information'] == FALSE) {
show_404(); show_404();
} }
//查询上一次保存记录 //查询上一次保存记录
$amp_log = $this->CI->Logs_model->get_last_edit_amp($ic_id); $amp_log = $this->CI->Logs_model->get_last_edit_amp($ic_id);
if(!empty($amp_log)){ if (!empty($amp_log)) {
$data['last_edit_amp_id'] = $amp_log->log_id; $data['last_edit_amp_id'] = $amp_log->log_id;
}else{ } else {
$data['last_edit_amp_id'] = ''; $data['last_edit_amp_id'] = '';
} }
$this->CI->load->view('bootstrap3/header', $data); $this->CI->load->view('bootstrap3/header', $data);
$this->CI->load->view('amp_editor'); $this->CI->load->view('amp_editor');
$this->CI->load->view('bootstrap3/footer'); $this->CI->load->view('bootstrap3/footer');
} }
public function auto_create($ic_id) { public function auto_create($ic_id)
{
$data = array(); $data = array();
if(strtolower($this->CI->config->item('site_code')) == 'cht'){ if (strtolower($this->CI->config->item('site_code')) == 'cht') {
$this->CI->Information_model->ic_type = "AND ic.ic_type != 'none'"; $this->CI->Information_model->ic_type = "AND ic.ic_type != 'none'";
} }
$data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id); $data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id);
if ($data['information'] == FALSE) { if ($data['information'] == FALSE) {
return json_encode(array('result' => 'no', 'data' => '找不到这个页面')); return json_encode(array('result' => 'no', 'data' => '找不到这个页面'));
@ -61,7 +65,7 @@ class Amplib {
break; break;
case 'gm': case 'gm':
$websitehost = 'https://data.chinarundreisen.com'; $websitehost = 'https://data.chinarundreisen.com';
$html_source_url = 'http://144.76.185.44:8029' . $data['information']->ic_url; $html_source_url = 'https://www.chinarundreisen.com/' . $data['information']->ic_url;
break; break;
case 'ct': case 'ct':
$websitehost = 'https://data.chinatravel.com'; $websitehost = 'https://data.chinatravel.com';
@ -75,23 +79,24 @@ class Amplib {
$html_source = GET_HTTP($html_source_url); $html_source = GET_HTTP($html_source_url);
if (!empty($html_source)) { if (!empty($html_source)) {
$post_data = array('websitehost' => $websitehost, 'template_name' => $site_code, 'create_amp' => 'true', 'htmlsource' => $html_source); $post_data = array('websitehost' => $websitehost, 'template_name' => $site_code, 'create_amp' => 'true', 'htmlsource' => $html_source);
//德语站点走另外一个控制器,其他站点还是走原来的流程 //德语站点走另外一个控制器,其他站点还是走原来的流程
if($site_code == 'gm'){ if ($site_code == 'gm') {
if($data['information']->ic_url == '/massgeschneiderte-china-reisen/'){ if ($data['information']->ic_url == '/massgeschneiderte-china-reisen/') {
return json_encode(array()); return json_encode(array());
}else{ } else {
return GET_HTTP(site_url('/apps/htmlcompressor/index_gm/choose_way'), $post_data, 'POST'); return GET_HTTP(site_url('/apps/htmlcompressor/index_gm/choose_way'), $post_data, 'POST');
} }
}elseif($site_code == 'ah'){ } elseif ($site_code == 'ah') {
return GET_HTTP(site_url('/apps/htmlcompressor/index_ah/choose_way'), $post_data, 'POST'); return GET_HTTP(site_url('/apps/htmlcompressor/index_ah/choose_way'), $post_data, 'POST');
}else{ } else {
return GET_HTTP(site_url('/apps/htmlcompressor/index/optimize'), $post_data, 'POST'); return GET_HTTP(site_url('/apps/htmlcompressor/index/optimize'), $post_data, 'POST');
} }
} }
return json_encode(array('result' => 'no', 'data' => '不知道哪里错了,看代码')); return json_encode(array('result' => 'no', 'data' => '不知道哪里错了,看代码'));
} }
public function edit_save($ic_id = false, $textarea_htmlcode = false, $amp_status = false) { public function edit_save($ic_id = false, $textarea_htmlcode = false, $amp_status = false)
{
$data = array(); $data = array();
if ($ic_id === false) { if ($ic_id === false) {
$ic_id = $this->CI->input->post('ic_id'); $ic_id = $this->CI->input->post('ic_id');
@ -111,8 +116,8 @@ class Amplib {
//CH的页面没有canonical内容在这里帮补上 //CH的页面没有canonical内容在这里帮补上
$textarea_htmlcode = str_replace('<!--@CANONICAL@-->', $this->CI->config->item('site_url') . $data['information']->ic_url, $textarea_htmlcode); $textarea_htmlcode = str_replace('<!--@CANONICAL@-->', $this->CI->config->item('site_url') . $data['information']->ic_url, $textarea_htmlcode);
//备份修改的代码 //备份修改的代码
$this->CI->Logs_model->write('backup_amp', $ic_id, $textarea_htmlcode); $this->CI->Logs_model->write('backup_amp', $ic_id, $textarea_htmlcode);
//AMP格式验证 //AMP格式验证
if ($amp_status !== '0') {//只有发布的时候才需要验证 if ($amp_status !== '0') {//只有发布的时候才需要验证

@ -8,7 +8,7 @@ class PrimeLinePrice_model extends CI_Model {
var $cli_grade = 7001; //(标准7001、豪华7002、经济7003 var $cli_grade = 7001; //(标准7001、豪华7002、经济7003
var $price_date = false; //查询价格日期区间 var $price_date = false; //查询价格日期区间
var $orderby = false; var $orderby = false;
// AH: 28 // CH: 1; AH: 28; GH : 33
var $DEI_SN = 28; var $DEI_SN = 28;
function __construct() { function __construct() {

@ -8,41 +8,43 @@ class Feedback_model extends CI_Model {
} }
/** /**
* 返回最新八条反馈信息 * 返回最新反馈信息,默认 20条
*/ */
function get_feedback_newest() { function get_feedback_newest($row_limit = 20) {
$total_limit = $row_limit * 2;
$feedback_query = $feedback_query =
$this->HT->query(" $this->HT->query("
select top 40 select top ?
tad_content, tai_customerid, tai_title, tai_getdate, tai_url tad_content, tai_customerid, tai_title, tai_getdate, tai_url
from Eva_TAInfo from Eva_TAInfo tai
left join Eva_TADetail on TAD_TAI_SN=TAI_SN left join Eva_TADetail on TAD_TAI_SN=TAI_SN
where TAD_Content is not null left join Eva_TAGuidePrize tgp on tgp.TGP_TAI_SN = tai.TAI_SN
order by tai_getdate desc"); where TAD_Content is not null
and isnull(TAI_DeleteFlag,0) = 0 and isnull(tgp.TGP_CheckState, 0) = 136002
order by tai_getdate desc", $total_limit);
$feedback_result = $feedback_query->result(); $feedback_result = $feedback_query->result();
$feedback_list = []; $feedback_list = [];
$customer_id_list = []; $customer_id_list = [];
foreach ($feedback_result as $feedback_row) { foreach ($feedback_result as $feedback_row) {
$createdOn = new DateTime($feedback_row->tai_getdate); $createdOn = new DateTime($feedback_row->tai_getdate);
$createdOnString = $createdOn->format('M Y'); $createdOnString = $createdOn->format('M Y');
$feedback_count = COUNT($feedback_list); $feedback_count = COUNT($feedback_list);
if (!in_array($feedback_row->tai_customerid, $customer_id_list) && $feedback_count < 20) { if (!in_array($feedback_row->tai_customerid, $customer_id_list) && $feedback_count < $row_limit) {
$feedback = [ $feedback = [
'title' => $feedback_row->tai_title, 'title' => $feedback_row->tai_title,
'customer' => $feedback_row->tai_customerid, 'customer' => $feedback_row->tai_customerid,
'content' => $feedback_row->tad_content, 'content' => $feedback_row->tad_content,
'url' => $feedback_row->tai_url, 'url' => $feedback_row->tai_url,
'createdOn' => $createdOnString 'createdOn' => $createdOnString
]; ];
$feedback_list[] = $feedback; $feedback_list[] = $feedback;
$customer_id_list[] = $feedback_row->tai_customerid; $customer_id_list[] = $feedback_row->tai_customerid;
}
} }
}
return $feedback_list; return $feedback_list;
} }
function test_feedback_newest() { function test_feedback_newest() {
@ -51,9 +53,11 @@ class Feedback_model extends CI_Model {
$this->HT->query(" $this->HT->query("
select top 40 select top 40
tad_content, tai_customerid, tai_title, tai_getdate, tai_url tad_content, tai_customerid, tai_title, tai_getdate, tai_url
from Eva_TAInfo from Eva_TAInfo tai
left join Eva_TADetail on TAD_TAI_SN=TAI_SN left join Eva_TADetail on TAD_TAI_SN=TAI_SN
left join Eva_TAGuidePrize tgp on tgp.TGP_TAI_SN = tai.TAI_SN
where TAD_Content is not null where TAD_Content is not null
and isnull(TAI_DeleteFlag,0) = 0 and isnull(tgp.TGP_CheckState, 0) = 136002
order by tai_getdate desc"); order by tai_getdate desc");
$feedback_result = $feedback_query->result(); $feedback_result = $feedback_query->result();
@ -65,12 +69,12 @@ class Feedback_model extends CI_Model {
$createdOnString = $createdOn->format('M Y'); $createdOnString = $createdOn->format('M Y');
$feedback_count = COUNT($feedback_list); $feedback_count = COUNT($feedback_list);
if (!in_array($feedback_row->tai_customerid, $customer_id_list) && $feedback_count < 20) { if (!in_array($feedback_row->tai_customerid, $customer_id_list) && $feedback_count < 20) {
$feedback = [ $feedback = [
// 'title' => $feedback_row->tai_title, 'title' => $feedback_row->tai_title,
'customer' => $feedback_row->tai_customerid, 'customer' => $feedback_row->tai_customerid,
// 'content' => $feedback_row->tad_content, // 'content' => $feedback_row->tad_content,
// 'url' => $feedback_row->tai_url, 'url' => $feedback_row->tai_url,
// 'createdOn' => $createdOnString 'createdOn' => $createdOnString
]; ];
$feedback_list[] = $feedback; $feedback_list[] = $feedback;
$customer_id_list[] = $feedback_row->tai_customerid; $customer_id_list[] = $feedback_row->tai_customerid;
@ -175,22 +179,77 @@ class Feedback_model extends CI_Model {
$feedback_result = $feedback_query->result(); $feedback_result = $feedback_query->result();
$feedback_list = []; $feedback_list = [];
$customer_id_list = [];
foreach ($feedback_result as $feedback_row) { foreach ($feedback_result as $feedback_row) {
$createdOn = new DateTime($feedback_row->tai_getdate); $createdOn = new DateTime($feedback_row->tai_getdate);
$createdOnString = $createdOn->format('M Y'); $createdOnString = $createdOn->format('M Y');
$feedback_count = COUNT($feedback_list);
if (!in_array($feedback_row->tai_customerid, $customer_id_list)) {
$feedback = [ $feedback = [
'title' => $feedback_row->tai_title, 'title' => $feedback_row->tai_title,
'customer' => $feedback_row->tai_customerid, 'customer' => $feedback_row->tai_customerid,
'content' => $feedback_row->tad_content, 'content' => $feedback_row->tad_content,
'url' => $feedback_row->tai_url, 'url' => $feedback_row->tai_url,
'createdOn' => $createdOnString 'createdOn' => $createdOnString
]; ];
$feedback_list[] = $feedback; $feedback_list[] = $feedback;
$customer_id_list[] = $feedback_row->tai_customerid;
}
} }
return $feedback_list; return $feedback_list;
} }
/**
* 根据顾问英文名查找反馈信息
*/
function get_feedback_by_advisor_name($advisor_name) {
$feedback_query =
$this->HT->query("
select top 3
tad.tad_content,
tai.tai_customerid,
tai.tai_title,
tai.tai_getdate,
tai.tai_url,
vci.cii2_name
from Eva_TAInfo tai
join Eva_TADetail tad on tad.TAD_TAI_SN = tai.TAI_SN
join V_CIty_Info vci on vci.cii_sn = tai.tai_cii_sn and vci.LGC_LGC = 1
where tad.TAD_SN in (
select TAD_SN
from Eva_TADetail e
join V_Operator_Info v on e.TAD_ObjList like '%,' + cast(v.OPI_SN as varchar) + ',%'
where e.TAD_ObjType = 99002
and v.LGC_LGC = 1
and v.OPI2_Name = ?
)
order by tai.tai_getdate desc;
",
array($advisor_name));
$feedback_result = $feedback_query->result();
$feedback_list = [];
$customer_id_list = [];
foreach ($feedback_result as $feedback_row) {
$createdOn = new DateTime($feedback_row->tai_getdate);
$createdOnString = $createdOn->format('M Y');
if (!in_array($feedback_row->tai_customerid, $customer_id_list)) {
$feedback = [
'title' => $feedback_row->tai_title,
'customer' => $feedback_row->tai_customerid,
'content' => $feedback_row->tad_content,
'url' => $feedback_row->tai_url,
'createdOn' => $createdOnString
];
$feedback_list[] = $feedback;
$customer_id_list[] = $feedback_row->tai_customerid;
}
}
return $feedback_list;
}
} }

@ -71,14 +71,116 @@ class InfoContents_model extends CI_Model
$query = $this->HT->query( $query = $this->HT->query(
$sql, $sql,
array( array(
$ic_url, $ic_url_title, $ic_type, $ic_title, str_replace( $ic_url,
$ic_url_title,
$ic_type,
$ic_title,
str_replace(
$this->config->item('media_image_url'), $this->config->item('media_image_url'),
$this->config->item('site_image_url'), $this->config->item('site_image_url'),
$ic_content $ic_content
), ),
$ic_summary, $ic_seo_title, $ic_seo_description, $ic_seo_keywords, $ic_show_bread_crumbs, $ic_status, $ic_summary,
$ic_template, $ic_photo, $ic_photo_width, $ic_photo_height, $this->config->item('site_code'), $ic_recommend_tours, $ic_recommend_packages, $ic_seo_title,
$ic_ht_area_id, $ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type, $ic_author $ic_seo_description,
$ic_seo_keywords,
$ic_show_bread_crumbs,
$ic_status,
$ic_template,
$ic_photo,
$ic_photo_width,
$ic_photo_height,
$this->config->item('site_code'),
$ic_recommend_tours,
$ic_recommend_packages,
$ic_ht_area_id,
$ic_ht_area_type,
$ic_ht_product_id,
$ic_ht_product_type,
$ic_author
)
);
$this->insert_id = $this->HT->last_id('infoContents');
return $query;
}
function Add_with_sitecode(
$ic_url,
$ic_url_title,
$ic_type,
$ic_title,
$ic_content,
$ic_summary,
$ic_seo_title,
$ic_seo_description,
$ic_seo_keywords,
$ic_show_bread_crumbs,
$ic_status,
$ic_template,
$ic_photo,
$ic_photo_width,
$ic_photo_height,
$ic_recommend_tours,
$ic_recommend_packages,
$ic_ht_area_id,
$ic_ht_area_type,
$ic_ht_product_id,
$ic_ht_product_type,
$ic_author,
$site_code = ''
) {
if (empty($site_code)) {
$site_code = $this->config->item('site_code');
}
$ic_content = str_replace('http:' . $this->config->item('site_image_url'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url_remote2'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url_org'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url2'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url_remote'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url3'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace($this->config->item('media_image_url_org2'), $this->config->item('site_image_url'), $ic_content);
$ic_content = str_replace('#textarea#', 'textarea', $ic_content);
$ic_content = str_replace('t_e_x_t_a_r_e_a', 'textarea', $ic_content);
$sql = "INSERT INTO infoContents \n"
. " ( \n"
. " ic_url, ic_url_title, ic_type, ic_title, ic_content, ic_summary, ic_seo_title, \n"
. " ic_seo_description, ic_seo_keywords, ic_show_bread_crumbs, ic_status, \n"
. " ic_template, ic_photo,ic_photo_width,ic_photo_height, ic_sitecode, ic_recommend_tours, ic_recommend_packages, \n"
. " ic_ht_area_id, ic_ht_area_type,ic_ht_product_id,ic_ht_product_type,ic_author, ic_datetime \n"
. " ) \n"
. "VALUES \n"
. " ( N?,N?,?,N?,N?,N?,N?,N?,N?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,getdate() )";
$query = $this->HT->query(
$sql,
array(
$ic_url,
$ic_url_title,
$ic_type,
$ic_title,
str_replace(
$this->config->item('media_image_url'),
$this->config->item('site_image_url'),
$ic_content
),
$ic_summary,
$ic_seo_title,
$ic_seo_description,
$ic_seo_keywords,
$ic_show_bread_crumbs,
$ic_status,
$ic_template,
$ic_photo,
$ic_photo_width,
$ic_photo_height,
$site_code,
$ic_recommend_tours,
$ic_recommend_packages,
$ic_ht_area_id,
$ic_ht_area_type,
$ic_ht_product_id,
$ic_ht_product_type,
$ic_author
) )
); );
$this->insert_id = $this->HT->last_id('infoContents'); $this->insert_id = $this->HT->last_id('infoContents');
@ -150,16 +252,36 @@ class InfoContents_model extends CI_Model
$query = $this->HT->query( $query = $this->HT->query(
$sql, $sql,
array( array(
$ic_url, $ic_url_title, $ic_type, $ic_title, $ic_content, $ic_summary, $ic_url,
$ic_seo_title, $ic_seo_description, $ic_seo_keywords, $ic_show_bread_crumbs, $ic_status, $ic_template, $ic_photo, $ic_photo_width, $ic_photo_height, $ic_url_title,
$ic_recommend_tours, $ic_recommend_packages, $ic_ht_area_id, $ic_type,
$ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type, $ic_author, $ic_id, $this->config->item('site_code') $ic_title,
$ic_content,
$ic_summary,
$ic_seo_title,
$ic_seo_description,
$ic_seo_keywords,
$ic_show_bread_crumbs,
$ic_status,
$ic_template,
$ic_photo,
$ic_photo_width,
$ic_photo_height,
$ic_recommend_tours,
$ic_recommend_packages,
$ic_ht_area_id,
$ic_ht_area_type,
$ic_ht_product_id,
$ic_ht_product_type,
$ic_author,
$ic_id,
$this->config->item('site_code')
) )
); );
return $query; return $query;
} }
//删除信息 //强制更新信息
function force_update($ic_id, $ic_content) function force_update($ic_id, $ic_content)
{ {
$sql = "UPDATE infoContents SET ic_content = N? WHERE ic_id = ?"; $sql = "UPDATE infoContents SET ic_content = N? WHERE ic_id = ?";
@ -167,6 +289,14 @@ class InfoContents_model extends CI_Model
return $query; return $query;
} }
//强制更新信息
function force_update_url($ic_id, $ic_url)
{
$sql = "UPDATE infoContents SET ic_url = N? WHERE ic_id = ?";
$query = $this->HT->query($sql, array($ic_url, $ic_id));
return $query;
}
//删除信息 //删除信息
function Delete($ic_id) function Delete($ic_id)
{ {
@ -204,7 +334,19 @@ class InfoContents_model extends CI_Model
public function get_ic_contents2($ic_id) public function get_ic_contents2($ic_id)
{ {
$sql = "SELECT top 1 ic_id, ic_content, ic_title, ic_url, ic_photo, ic_sitecode, ic_seo_description from infoContents where ic_id=?"; $sql = "SELECT top 1 * from infoContents where ic_id=?";
$query = $this->HT->query($sql, array($ic_id));
if ($query->result()) {
$row = $query->row();
return $row;
} else {
return FALSE;
}
}
public function get_ic_contents2_gm($ic_id)
{
$sql = "SELECT top 1 * from information_gm.dbo.infoContents where ic_id=?";
$query = $this->HT->query($sql, array($ic_id)); $query = $this->HT->query($sql, array($ic_id));
if ($query->result()) { if ($query->result()) {
$row = $query->row(); $row = $query->row();
@ -227,4 +369,29 @@ class InfoContents_model extends CI_Model
return FALSE; return FALSE;
} }
} }
public function list_use_hb($site)
{
$sql = "
SELECT c.ic_id, c.ic_url
FROM infoContents c
INNER JOIN infoMetas m
ON c.ic_id = m.im_ic_id
WHERE m.im_key = 'AMP_BODY_PC_STATUS'
AND CONVERT(nvarchar(max), m.im_value) = 'yes'
AND c.ic_sitecode = ?
";
$query = $this->HT->query($sql, array($site));
return $query->result();
}
public function get_isid_by_icid($ic_id)
{
$sql = "
select is_id from infoStructures s
where s.is_ic_id=?
";
$query = $this->HT->query($sql, array($ic_id));
return $query->row();
}
} }

@ -1,25 +1,29 @@
<?php <?php
class InfoMetas_model extends CI_Model { class InfoMetas_model extends CI_Model
{
function __construct() { function __construct()
{
parent::__construct(); parent::__construct();
$this->HT = $this->load->database('INFORMATION', TRUE); $this->HT = $this->load->database('INFORMATION', TRUE);
} }
function add($im_ic_id, $im_key, $im_value) { function add($im_ic_id, $im_key, $im_value)
{
$sql = "INSERT INTO infoMetas \n" $sql = "INSERT INTO infoMetas \n"
. " ( \n" . " ( \n"
. " im_ic_id, im_key, im_value \n" . " im_ic_id, im_key, im_value \n"
. " ) \n" . " ) \n"
. "VALUES \n" . "VALUES \n"
. " ( \n" . " ( \n"
. " ?, ?, N? \n" . " ?, ?, N? \n"
. " )"; . " )";
return $this->HT->query($sql, array($im_ic_id, $im_key, (string)$im_value)); return $this->HT->query($sql, array($im_ic_id, $im_key, (string) $im_value));
} }
function get_list($im_ic_id, $im_key) { function get_list($im_ic_id, $im_key)
{
$sql = " $sql = "
SELECT im.im_id SELECT im.im_id
,im.im_ic_id ,im.im_ic_id
@ -33,8 +37,9 @@ class InfoMetas_model extends CI_Model {
$query = $this->HT->query($sql, array($im_ic_id, $im_key)); $query = $this->HT->query($sql, array($im_ic_id, $im_key));
return $query->result(); return $query->result();
} }
function get_list_by_key($im_key) { function get_list_by_key($im_ic_id, $im_key)
{
$sql = " $sql = "
SELECT im.im_id SELECT im.im_id
,im.im_ic_id ,im.im_ic_id
@ -50,7 +55,8 @@ class InfoMetas_model extends CI_Model {
} }
//列表所有含AMPmeta的信息。 //列表所有含AMPmeta的信息。
public function list_amp($site_code) { public function list_amp($site_code)
{
$sql = " $sql = "
SELECT im.im_id SELECT im.im_id
,im.im_ic_id ,im.im_ic_id
@ -74,7 +80,8 @@ class InfoMetas_model extends CI_Model {
} }
//列表所有不含AMPmeta的信息。 //列表所有不含AMPmeta的信息。
public function list_no_amp($site_code) { public function list_no_amp($site_code)
{
$sql = " $sql = "
SELECT c0.ic_id, c0.ic_url SELECT c0.ic_id, c0.ic_url
FROM infoContents c0 FROM infoContents c0
@ -106,7 +113,8 @@ class InfoMetas_model extends CI_Model {
} }
//按节点列表信息含meta数据 //按节点列表信息含meta数据
function list_info_by_path_with_meta($is_path, $site_code) { function list_info_by_path_with_meta($is_path, $site_code)
{
$sql = "SELECT is1.is_id, \n" $sql = "SELECT is1.is_id, \n"
. " is1.is_path, \n" . " is1.is_path, \n"
. " ic.ic_id, \n" . " ic.ic_id, \n"
@ -130,11 +138,26 @@ class InfoMetas_model extends CI_Model {
return $query->result(); return $query->result();
} }
function get($im_ic_id, $im_key) { function get($im_ic_id, $im_key)
{
$sql = "SELECT im.im_value \n"
. "FROM infoMetas im \n"
. "WHERE im.im_ic_id = ? \n"
. " AND im.im_key = ?";
$query = $this->HT->query($sql, array($im_ic_id, $im_key));
if ($query->num_rows() > 0) {
return $query->row()->im_value;
} else {
return false;
}
}
function get_gm($im_ic_id, $im_key)
{
$sql = "SELECT im.im_value \n" $sql = "SELECT im.im_value \n"
. "FROM infoMetas im \n" . "FROM information_gm.dbo.infoMetas im \n"
. "WHERE im.im_ic_id = ? \n" . "WHERE im.im_ic_id = ? \n"
. " AND im.im_key = ?"; . " AND im.im_key = ?";
$query = $this->HT->query($sql, array($im_ic_id, $im_key)); $query = $this->HT->query($sql, array($im_ic_id, $im_key));
if ($query->num_rows() > 0) { if ($query->num_rows() > 0) {
return $query->row()->im_value; return $query->row()->im_value;
@ -143,17 +166,19 @@ class InfoMetas_model extends CI_Model {
} }
} }
function detail($im_ic_id, $im_key) { function detail($im_ic_id, $im_key)
{
$sql = "SELECT im.im_value \n" $sql = "SELECT im.im_value \n"
. "FROM infoMetas im \n" . "FROM infoMetas im \n"
. "WHERE im.im_ic_id = ? \n" . "WHERE im.im_ic_id = ? \n"
. " AND im.im_key = ? ORDER BY im.im_id asc"; . " AND im.im_key = ? ORDER BY im.im_id asc";
$query = $this->HT->query($sql, array($im_ic_id, $im_key)); $query = $this->HT->query($sql, array($im_ic_id, $im_key));
return $query->result(); return $query->result();
} }
//获取未收录的信息 //获取未收录的信息
public function get_unembody_content($datetime, $top_num = 1) { public function get_unembody_content($datetime, $top_num = 1)
{
$sql = " SELECT TOP $top_num $sql = " SELECT TOP $top_num
im_ic_id, im_ic_id,
im_value, im_value,
@ -172,33 +197,37 @@ class InfoMetas_model extends CI_Model {
return $query->result(); return $query->result();
} }
function update($im_ic_id, $im_key, $im_value) { function update($im_ic_id, $im_key, $im_value)
{
$sql = "UPDATE infoMetas \n" $sql = "UPDATE infoMetas \n"
. "SET im_value = N? \n" . "SET im_value = N? \n"
. "WHERE im_ic_id = ? \n" . "WHERE im_ic_id = ? \n"
. " AND im_key = ?"; . " AND im_key = ?";
return $this->HT->query($sql, array((string)$im_value, $im_ic_id, $im_key)); return $this->HT->query($sql, array((string) $im_value, $im_ic_id, $im_key));
} }
function delete($im_ic_id, $im_key) { function delete($im_ic_id, $im_key)
{
$sql = "DELETE \n" $sql = "DELETE \n"
. "FROM infoMetas \n" . "FROM infoMetas \n"
. "WHERE im_ic_id = ? \n" . "WHERE im_ic_id = ? \n"
. " AND im_key = ?"; . " AND im_key = ?";
return $this->HT->query($sql, array($im_ic_id, $im_key)); return $this->HT->query($sql, array($im_ic_id, $im_key));
} }
function update_by_id($im_id, $im_value) { function update_by_id($im_id, $im_value)
{
$sql = "UPDATE infoMetas \n" $sql = "UPDATE infoMetas \n"
. "SET im_value = N? \n" . "SET im_value = N? \n"
. "WHERE im_id = ? \n"; . "WHERE im_id = ? \n";
return $this->HT->query($sql, array($im_value, $im_id)); return $this->HT->query($sql, array($im_value, $im_id));
} }
function delete_by_id($im_id) { function delete_by_id($im_id)
{
$sql = "DELETE \n" $sql = "DELETE \n"
. "FROM infoMetas \n" . "FROM infoMetas \n"
. "WHERE im_id = ? \n"; . "WHERE im_id = ? \n";
return $this->HT->query($sql, array($im_id)); return $this->HT->query($sql, array($im_id));
} }

@ -37,17 +37,23 @@ class InfoSMS_model extends CI_Model
//设置已读 //设置已读
function readed($m_id) function readed($m_id)
{ {
/* 不再使用注释-lmr
$sql = "UPDATE infosms \n" $sql = "UPDATE infosms \n"
. "SET m_readed = 1 \n" . "SET m_readed = 1 \n"
. "WHERE m_id = ?"; . "WHERE m_id = ?";
return $this->HT->query($sql,array($m_id)); return $this->HT->query($sql,array($m_id));
*/
return array();
} }
function readed_for_info($m_object_id,$m_object_type='info') function readed_for_info($m_object_id,$m_object_type='info')
{ {
/* 不再使用注释-lmr
$sql = "UPDATE infosms \n" $sql = "UPDATE infosms \n"
. "SET m_readed = 1 \n" . "SET m_readed = 1 \n"
. "WHERE m_object_type=? and m_object_id = ?"; . "WHERE m_object_type=? and m_object_id = ?";
return $this->HT->query($sql,array($m_object_type,$m_object_id)); return $this->HT->query($sql,array($m_object_type,$m_object_id));
*/
return array();
} }
//获取未读消息 //获取未读消息

@ -16,100 +16,149 @@ class InfoStructures_model extends CI_Model
function Detail($is_id) function Detail($is_id)
{ {
$sql = "SELECT TOP 1 is1.is_id, \n" $sql = "SELECT TOP 1 is1.is_id, \n"
. " is1.is_parent_id, \n" . " is1.is_parent_id, \n"
. " is1.is_path, \n" . " is1.is_path, \n"
. " is1.is_level, \n" . " is1.is_level, \n"
. " is1.is_sort, \n" . " is1.is_sort, \n"
. " is1.is_sitecode, \n" . " is1.is_sitecode, \n"
. " is1.is_datetime, \n" . " is1.is_datetime, \n"
. " is1.is_ic_id \n" . " is1.is_ic_id \n"
. "FROM infoStructures is1 \n" . "FROM infoStructures is1 \n"
. "WHERE is1.is_id = ?"; . "WHERE is1.is_id = ?";
$query = $this->HT->query($sql, array($is_id)); $query = $this->HT->query($sql, array($is_id));
//print_r($this->HT->queries); //print_r($this->HT->queries);
if ($query->result()) if ($query->result()) {
{
$row = $query->row(); $row = $query->row();
return $row; return $row;
} else {
return FALSE;
} }
else }
{
function Detail_gm($is_id)
{
$sql = "SELECT TOP 1 is1.is_id, \n"
. " is1.is_parent_id, \n"
. " is1.is_path, \n"
. " is1.is_level, \n"
. " is1.is_sort, \n"
. " is1.is_sitecode, \n"
. " is1.is_datetime, \n"
. " is1.is_ic_id \n"
. "FROM information_gm.dbo.infoStructures is1 \n"
. "WHERE is1.is_id = ?";
$query = $this->HT->query($sql, array($is_id));
//print_r($this->HT->queries);
if ($query->result()) {
$row = $query->row();
return $row;
} else {
return FALSE; return FALSE;
} }
} }
function Add($is_parent_id, $is_ic_id=-1,$is_sort=999) function Add($is_parent_id, $is_ic_id = -1, $is_sort = 999)
{ {
if ($is_parent_id == 0 ) if ($is_parent_id == 0) {
{
$is_path = ''; $is_path = '';
$is_level = 1; $is_level = 1;
}else if($is_parent_id == -99){ } else if ($is_parent_id == -99) {
$is_path = ''; $is_path = '';
$is_level = 0; $is_level = 0;
$is_sort=0; $is_sort = 0;
} } else {
else
{
$infoStructure = $this->Detail($is_parent_id); $infoStructure = $this->Detail($is_parent_id);
if ($infoStructure) if ($infoStructure) {
{
$is_path = $infoStructure->is_path; $is_path = $infoStructure->is_path;
$is_level = $infoStructure->is_level + 1; $is_level = $infoStructure->is_level + 1;
} } else {
else
{
return false; return false;
} }
} }
$sql = "INSERT INTO infoStructures \n" $sql = "INSERT INTO infoStructures \n"
. " ( \n" . " ( \n"
. " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n" . " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n"
. " ) \n" . " ) \n"
. "VALUES \n" . "VALUES \n"
. " ( \n" . " ( \n"
. " ?, ?, ?, ?, ?, getdate(), ? \n" . " ?, ?, ?, ?, ?, getdate(), ? \n"
. " )"; . " )";
$query = $this->HT->query($sql, array($is_parent_id, $is_path, $is_level, $is_sort, $this->config->item('site_code'), $is_ic_id)); $query = $this->HT->query($sql, array($is_parent_id, $is_path, $is_level, $is_sort, $this->config->item('site_code'), $is_ic_id));
$this->insert_id = $this->HT->last_id('infoStructures'); $this->insert_id = $this->HT->last_id('infoStructures');
//把自己的ID加到path上 //把自己的ID加到path上
$set_sql = "UPDATE infoStructures \n" $set_sql = "UPDATE infoStructures \n"
. "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n" . "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$query = $this->HT->query($set_sql, array($this->insert_id)); $query = $this->HT->query($set_sql, array($this->insert_id));
return $this->insert_id; return $this->insert_id;
} }
function GetParent($is_path, $level=1) function Add_with_sitecode($is_parent_id, $is_ic_id = -1, $is_sort = 999, $site_code = '')
{ {
if ($is_path == '') if (empty ($site_code)) {
{ $site_code = $this->config->item('site_code');
}
if ($is_parent_id == 0) {
$is_path = '';
$is_level = 1;
} else if ($is_parent_id == -99) {
$is_path = '';
$is_level = 0;
$is_sort = 0;
} else {
$infoStructure = $this->Detail($is_parent_id);
if ($infoStructure) {
$is_path = $infoStructure->is_path;
$is_level = $infoStructure->is_level + 1;
} else {
return false;
}
}
$sql = "INSERT INTO infoStructures \n"
. " ( \n"
. " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n"
. " ) \n"
. "VALUES \n"
. " ( \n"
. " ?, ?, ?, ?, ?, getdate(), ? \n"
. " )";
$query = $this->HT->query($sql, array($is_parent_id, $is_path, $is_level, $is_sort, $site_code, $is_ic_id));
$this->insert_id = $this->HT->last_id('infoStructures');
//把自己的ID加到path上
$set_sql = "UPDATE infoStructures \n"
. "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n"
. "WHERE is_id = ?";
$query = $this->HT->query($set_sql, array($this->insert_id));
return $this->insert_id;
}
function GetParent($is_path, $level = 1)
{
if ($is_path == '') {
return false; return false;
} }
$sql = "SELECT TOP 1 is1.is_id, \n" $sql = "SELECT TOP 1 is1.is_id, \n"
. " is1.is_parent_id, \n" . " is1.is_parent_id, \n"
. " is1.is_path, \n" . " is1.is_path, \n"
. " is1.is_level, \n" . " is1.is_level, \n"
. " is1.is_sort, \n" . " is1.is_sort, \n"
. " is1.is_sitecode, \n" . " is1.is_sitecode, \n"
. " is1.is_datetime, \n" . " is1.is_datetime, \n"
. " is1.is_ic_id \n" . " is1.is_ic_id \n"
. "FROM infoStructures is1 \n" . "FROM infoStructures is1 \n"
. "WHERE is1.is_level = ? \n" . "WHERE is1.is_level = ? \n"
. " AND is1.is_id IN ($is_path 0) \n" . " AND is1.is_id IN ($is_path 0) \n"
. "ORDER BY \n" . "ORDER BY \n"
. " is1.is_id ASC"; . " is1.is_id ASC";
$query = $this->HT->query($sql, array($level)); $query = $this->HT->query($sql, array($level));
// print_r($this->HT->queries); // print_r($this->HT->queries);
if ($query->result()) if ($query->result()) {
{
$row = $query->row(); $row = $query->row();
return $row; return $row;
} } else {
else
{
return FALSE; return FALSE;
} }
} }
@ -119,12 +168,9 @@ class InfoStructures_model extends CI_Model
{ {
$detail = $this->Detail($is_id); $detail = $this->Detail($is_id);
$root = $this->GetParent($detail->is_path, 1); $root = $this->GetParent($detail->is_path, 1);
if ($root) if ($root) {
{
return $root; return $root;
} } else { //没有根节点则返回本节点
else
{ //没有根节点则返回本节点
return $detail; return $detail;
} }
} }
@ -133,15 +179,12 @@ class InfoStructures_model extends CI_Model
function HasChild($is_id) function HasChild($is_id)
{ {
$sql = "SELECT TOP 1 is1.is_id \n" $sql = "SELECT TOP 1 is1.is_id \n"
. "FROM infoStructures is1 \n" . "FROM infoStructures is1 \n"
. "WHERE is1.is_parent_id = ?"; . "WHERE is1.is_parent_id = ?";
$query = $this->HT->query($sql, array($is_id)); $query = $this->HT->query($sql, array($is_id));
if ($query->result()) if ($query->result()) {
{
return true; return true;
} } else {
else
{
return FALSE; return FALSE;
} }
} }
@ -150,8 +193,8 @@ class InfoStructures_model extends CI_Model
function Delete($is_id) function Delete($is_id)
{ {
$sql = "DELETE \n" $sql = "DELETE \n"
. "FROM infoStructures \n" . "FROM infoStructures \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$query = $this->HT->query($sql, array($is_id)); $query = $this->HT->query($sql, array($is_id));
return $query; return $query;
} }
@ -160,9 +203,9 @@ class InfoStructures_model extends CI_Model
function set_sort($is_id, $sort) function set_sort($is_id, $sort)
{ {
$sql = "UPDATE infoStructures \n" $sql = "UPDATE infoStructures \n"
. "SET is_datetime = GETDATE(), \n" . "SET is_datetime = GETDATE(), \n"
. " is_sort = ? \n" . " is_sort = ? \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$query = $this->HT->query($sql, array($sort, $is_id)); $query = $this->HT->query($sql, array($sort, $is_id));
//print_r($this->HT->queries); //print_r($this->HT->queries);
return $query; return $query;
@ -173,8 +216,7 @@ class InfoStructures_model extends CI_Model
{ {
$structure = $this->Detail($is_id); $structure = $this->Detail($is_id);
//如果父级相同则不需要重新设置path //如果父级相同则不需要重新设置path
if ($parent_id == $structure->is_parent_id) if ($parent_id == $structure->is_parent_id) {
{
return true; return true;
} }
$parent = $this->Detail($parent_id); $parent = $this->Detail($parent_id);
@ -184,39 +226,37 @@ class InfoStructures_model extends CI_Model
$set_path = $parent->is_path . $is_id . ','; $set_path = $parent->is_path . $is_id . ',';
$set_sql = "UPDATE infoStructures \n" $set_sql = "UPDATE infoStructures \n"
. "SET is_parent_id = ?, \n" . "SET is_parent_id = ?, \n"
. " is_level = ?, \n" . " is_level = ?, \n"
. " is_path = ? \n" . " is_path = ? \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $is_id)); $this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $is_id));
$structure = $this->Detail($is_id); $structure = $this->Detail($is_id);
//查询当前节点的所有子节点 //查询当前节点的所有子节点
$sql = "SELECT is1.is_id, \n" $sql = "SELECT is1.is_id, \n"
. " is1.is_parent_id, \n" . " is1.is_parent_id, \n"
. " is1.is_path, \n" . " is1.is_path, \n"
. " is1.is_level, \n" . " is1.is_level, \n"
. " is1.is_sort \n" . " is1.is_sort \n"
. "FROM infoStructures is1 \n" . "FROM infoStructures is1 \n"
. "WHERE ',' + is1.is_path LIKE '%,$structure->is_id,%' \n" . "WHERE ',' + is1.is_path LIKE '%,$structure->is_id,%' \n"
. "ORDER BY \n" . "ORDER BY \n"
. " is1.is_level ASC "; . " is1.is_level ASC ";
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
foreach ($query->result() as $item) foreach ($query->result() as $item) {
{ if ($item->is_parent_id != $structure->is_id) {
if ($item->is_parent_id != $structure->is_id)
{
$structure = $this->Detail($item->is_parent_id); $structure = $this->Detail($item->is_parent_id);
} }
$set_parent_id = $structure->is_id; $set_parent_id = $structure->is_id;
$set_level = $structure->is_level + 1; $set_level = $structure->is_level + 1;
$set_path = $structure->is_path . $item->is_id . ','; $set_path = $structure->is_path . $item->is_id . ',';
$set_sql = "UPDATE infoStructures \n" $set_sql = "UPDATE infoStructures \n"
. "SET is_parent_id = ?, \n" . "SET is_parent_id = ?, \n"
. " is_level = ?, \n" . " is_level = ?, \n"
. " is_path = ? \n" . " is_path = ? \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $item->is_id)); $this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $item->is_id));
} }
} }
@ -227,21 +267,22 @@ class InfoStructures_model extends CI_Model
* @return: * @return:
* @Date Changed: * @Date Changed:
*/ */
public function AddRootNote($is_ic_id){ public function AddRootNote($is_ic_id)
{
$sql = "INSERT INTO infoStructures \n" $sql = "INSERT INTO infoStructures \n"
. " ( \n" . " ( \n"
. " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n" . " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n"
. " ) \n" . " ) \n"
. "VALUES \n" . "VALUES \n"
. " ( \n" . " ( \n"
. " ?, ?, ?, ?, ?, getdate(), ? \n" . " ?, ?, ?, ?, ?, getdate(), ? \n"
. " )"; . " )";
$query = $this->HT->query($sql, array(-99, '', 0, 0, $this->config->item('site_code'), $is_ic_id)); $query = $this->HT->query($sql, array(-99, '', 0, 0, $this->config->item('site_code'), $is_ic_id));
$this->insert_id = $this->HT->last_id('infoStructures'); $this->insert_id = $this->HT->last_id('infoStructures');
//把自己的ID加到path上 //把自己的ID加到path上
$set_sql = "UPDATE infoStructures \n" $set_sql = "UPDATE infoStructures \n"
. "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n" . "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n"
. "WHERE is_id = ?"; . "WHERE is_id = ?";
$query = $this->HT->query($set_sql, array($this->insert_id)); $query = $this->HT->query($set_sql, array($this->insert_id));
return $this->insert_id; return $this->insert_id;

File diff suppressed because it is too large Load Diff

@ -14,77 +14,66 @@ class Operator_model extends CI_Model
function check_login($user_code, $password) function check_login($user_code, $password)
{ {
$sql = "SELECT TOP 1 1 \n" $sql = "SELECT TOP 1 1 \n"
. "FROM tourmanager.dbo.OperatorInfo oi \n" . "FROM tourmanager.dbo.OperatorInfo oi \n"
. "WHERE oi.OPI_Code = N? \n" . "WHERE oi.OPI_Code = N? \n"
. " AND CONVERT(VARCHAR(100), oi.OPI_Password) = N? "; . " AND CONVERT(VARCHAR(100), oi.OPI_Password) = N? ";
$query = $this->HT->query($sql, array($user_code, $password)); $query = $this->HT->query($sql, array($user_code, $password));
//print_r($this->HT->queries); //print_r($this->HT->queries);
if ($query->num_rows() > 0) if ($query->num_rows() > 0) {
{
return 1; return 1;
} } else {
else
{
$author_sql = "SELECT TOP 1 1 FROM tourmanager.dbo.infoAuthors WHERE a_email=? AND a_password=?"; $author_sql = "SELECT TOP 1 1 FROM tourmanager.dbo.infoAuthors WHERE a_email=? AND a_password=?";
$author_query = $this->HT->query($author_sql, array($user_code, $password)); $author_query = $this->HT->query($author_sql, array($user_code, $password));
if ($author_query->num_rows() > 0) if ($author_query->num_rows() > 0) {
{
return 2; return 2;
} } else {
else{
return FALSE; return FALSE;
} }
} }
} }
function get_password($user_code) function get_password($user_code)
{ {
$sql = "SELECT TOP 1 oi.OPI_Password \n" $sql = "SELECT TOP 1 oi.OPI_Password \n"
. "FROM tourmanager.dbo.OperatorInfo oi \n" . "FROM tourmanager.dbo.OperatorInfo oi \n"
. "WHERE oi.OPI_Code = N?"; . "WHERE oi.OPI_Code = N?";
$query = $this->HT->query($sql, array($user_code)); $query = $this->HT->query($sql, array($user_code));
//print_r($this->HT->queries); //print_r($this->HT->queries);
if ($query->num_rows() > 0) if ($query->num_rows() > 0) {
{
$row = $query->row_array(); $row = $query->row_array();
return $row; return $row;
} } else {
else
{
return FALSE; return FALSE;
} }
} }
//获取登录用户详细信息 //获取登录用户详细信息
function get_user($user_code) function get_user($user_code)
{ {
if(empty($user_code)) if (empty($user_code)) {
{ return false;
return false; }
}
$sql = "SELECT TOP 1 oi.OPI_SN, \n" $sql = "SELECT TOP 1 oi.OPI_SN, \n"
. " oi.OPI_Name, \n" . " oi.OPI_Name, \n"
. " oi.OPI_Email, \n" . " oi.OPI_Email, \n"
. " oi.OPI_FirstName, \n" . " oi.OPI_FirstName, \n"
. " oi.OPI_Code \n" . " oi.OPI_Code \n"
. "FROM tourmanager.dbo.OperatorInfo oi \n" . "FROM tourmanager.dbo.OperatorInfo oi \n"
. "WHERE oi.OPI_Code = N?"; . "WHERE oi.OPI_Code = N?";
$query = $this->HT->query($sql, array($user_code)); $query = $this->HT->query($sql, array($user_code));
//print_r($this->HT->queries); //print_r($this->HT->queries);
if ($query->num_rows() > 0) if ($query->num_rows() > 0) {
{
$row = $query->row_array(); $row = $query->row_array();
return $row; return $row;
} } else {
else
{
return FALSE; return FALSE;
} }
} }
//获取作者平台的作者信息 //获取作者平台的作者信息
public function get_author_user($a_email){ public function get_author_user($a_email)
{
$sql = "SELECT TOP 1 $sql = "SELECT TOP 1
a_id as OPI_SN, a_id as OPI_SN,
a_email as OPI_Email, a_email as OPI_Email,
@ -94,42 +83,39 @@ class Operator_model extends CI_Model
FROM tourmanager.dbo.infoAuthors FROM tourmanager.dbo.infoAuthors
WHERE a_email=? AND a_active=1"; WHERE a_email=? AND a_active=1";
$query = $this->HT->query($sql, array($a_email)); $query = $this->HT->query($sql, array($a_email));
if ($query->num_rows() > 0) if ($query->num_rows() > 0) {
{
$row = $query->row_array(); $row = $query->row_array();
return $row; return $row;
} } else {
else
{
return FALSE; return FALSE;
} }
} }
//获取作者信息 //获取作者信息
function get_author($user_code=array()) function get_author($user_code = array())
{ {
$user_code_str=''; $user_code_str = '';
foreach($user_code as $user_item) foreach ($user_code as $user_item) {
{ $user_code_str .= "'" . $user_item . "',";
$user_code_str.="'".$user_item."',"; }
} $user_code_str .= "'0'";
$user_code_str.="'0'";
$sql = "SELECT oi.OPI_SN, \n" $sql = "SELECT oi.OPI_SN, \n"
. " oi.OPI_Name, \n" . " oi.OPI_Name, \n"
. " oi.OPI_Email, \n" . " oi.OPI_Email, \n"
. " oi.OPI_FirstName, \n" . " oi.OPI_FirstName, \n"
. " oi.OPI_Code \n" . " oi.OPI_Code \n"
. "FROM tourmanager.dbo.OperatorInfo oi \n" . "FROM tourmanager.dbo.OperatorInfo oi \n"
. "WHERE oi.OPI_Code IN ( $user_code_str )"; . "WHERE oi.OPI_Code IN ( $user_code_str )";
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
//print_r($this->HT->queries); //print_r($this->HT->queries);
return $query->result(); return $query->result();
} }
//获取作者的昵称 //获取作者的昵称
function get_author_nikename($user_code){ function get_author_nikename($user_code)
$sql=" {
$sql = "
SELECT top 1 isnull(uio.NickName,'') as NickName,uio.customPic, uio.userid, uio.sex, uio.Email,uio.intro SELECT top 1 isnull(uio.NickName,'') as NickName,uio.customPic, uio.userid, uio.sex, uio.Email,uio.intro
,OPI_SN,OPI_Name,OPI_Email,OPI_FirstName,OPI_Code ,OPI_SN,OPI_Name,OPI_Email,OPI_FirstName,OPI_Code
FROM tourmanager.dbo.OperatorInfo left JOIN FROM tourmanager.dbo.OperatorInfo left JOIN
@ -145,25 +131,26 @@ class Operator_model extends CI_Model
return FALSE; return FALSE;
} }
} }
//HT中所有账号 //HT中所有账号
function all() function all()
{ {
$sql = "SELECT oi.OPI_SN, \n" $sql = "SELECT oi.OPI_SN, \n"
. " oi.OPI_Name, \n" . " oi.OPI_Name, \n"
. " oi.OPI_Email, \n" . " oi.OPI_Email, \n"
. " oi.OPI_FirstName, \n" . " oi.OPI_FirstName, \n"
. " oi.OPI_Code \n" . " oi.OPI_Code \n"
. "FROM tourmanager.dbo.OperatorInfo oi \n" . "FROM tourmanager.dbo.OperatorInfo oi \n"
. "WHERE oi.deleteFlag=0 \n" . "WHERE oi.deleteFlag=0 \n"
. "ORDER BY OPI_Code ASC "; . "ORDER BY OPI_Code ASC ";
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
//print_r($this->HT->queries); //print_r($this->HT->queries);
return $query->result(); return $query->result();
} }
//获取当前站点的作者 //获取当前站点的作者
public function get_site_user($site_code){ public function get_site_user($site_code)
{
$sql = "SELECT oi.OPI_SN, $sql = "SELECT oi.OPI_SN,
oi.OPI_Name, oi.OPI_Name,
oi.OPI_Email, oi.OPI_Email,
@ -171,7 +158,7 @@ class Operator_model extends CI_Model
oi.OPI_Code oi.OPI_Code
FROM tourmanager.dbo.OperatorInfo oi INNER JOIN infoaccessownsite i ON oi.OPI_Code=i.iao_author AND i.iao_other='editor' FROM tourmanager.dbo.OperatorInfo oi INNER JOIN infoaccessownsite i ON oi.OPI_Code=i.iao_author AND i.iao_other='editor'
WHERE i.iao_site=?"; WHERE i.iao_site=?";
$query = $this->HT->query($sql,$site_code); $query = $this->HT->query($sql, $site_code);
return $query->result(); return $query->result();
} }
} }

@ -8,6 +8,7 @@ class Trippest_model extends CI_Model {
{ {
parent::__construct(); parent::__construct();
$this->HT = $this->load->database('HT', TRUE); $this->HT = $this->load->database('HT', TRUE);
//$this->HT = $this->load->database('TOURMANAGER_LOCAL', TRUE);
} }

@ -0,0 +1,164 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class TrainDMS extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->model("dms_model");
}
/**
* @description: 接口总汇,根据接受数据,调用不同接口,返回数据
* @return {*}
* @Date Changed:
*/
public function dmsCallback(){
$back_json = file_get_contents('php://input');
$dms_backdata = json_decode($back_json);
if(!empty($dms_backdata)){
//判断接口调用是否合法
$TimeStamp = $dms_backdata->authentication->timeStamp;
$serviceName = $dms_backdata->authentication->serviceName; //每个接口都有自己名称
$companyId = "haina";
$key = "dms001";
$strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌
$Sign = md5($strSign);
$messageIdentity = $dms_backdata->authentication->messageIdentity;
$ResultNoticeResponse = new stdClass();
if ($Sign == $messageIdentity){
$ResultNoticeResponse->returnCode = 1;
$ResultNoticeResponse->returnMsg = "success";
//这里正常处理各种接口调用
if ($serviceName=="dms.login"){ //登录
$username = $dms_backdata->loginInfo->username;
$password = $dms_backdata->loginInfo->password;
$ResultNoticeResponse->loginInfo = new stdClass();
$LoginInfo = $this->dms_model->Login($username,$password);
if (empty($LoginInfo)){
$ResultNoticeResponse->loginInfo->status = 0; //账号密码错误。
$ResultNoticeResponse->loginInfo->dt_username = '';
$ResultNoticeResponse->loginInfo->dt_payrule = "";
$ResultNoticeResponse->loginInfo->dt_usertype = "";
$ResultNoticeResponse->loginInfo->dt_HtId = "";
$ResultNoticeResponse->loginInfo->dt_id = "";
}else{
$ResultNoticeResponse->loginInfo->status = 1; //账号密码是否正常。
$ResultNoticeResponse->loginInfo->dt_username = $LoginInfo->dt_username;
$ResultNoticeResponse->loginInfo->dt_payrule = $LoginInfo->dt_payrule;
$ResultNoticeResponse->loginInfo->dt_usertype = $LoginInfo->dt_usertype;
$ResultNoticeResponse->loginInfo->dt_HtId = $LoginInfo->dt_HtId;
$ResultNoticeResponse->loginInfo->dt_id = $LoginInfo->dt_id;
}
}else if($serviceName=="dms.dmlist"){ //分销商列表
$arrKeyword = new stdClass();
$arrKeyword = $dms_backdata->arrKeyword;
$dmlist = $this->dms_model->get_DmList($arrKeyword);
$resultData = $dmlist["data"];
$total = $dmlist["total"];
$ResultNoticeResponse->dmlist = new stdClass();
$ResultNoticeResponse->dmlist->data=$resultData;
$ResultNoticeResponse->dmlist->total = $total;
// "arrKeyword": {
// "s_username": "ssss",
// "s_ename": "vvv",
// "page": false,
// "per_page": 20
// }
}else if($serviceName=="dms.getpayrule"){ //获取支付规则列表数据
$getpayrule = $this->dms_model->get_payrule();
$ResultNoticeResponse->getpayrule = $getpayrule;
}else if ($serviceName=="dms.addsave"){ //添加供应商操作
$formData = new stdClass() ;
$formData = $dms_backdata->formInfo;
$rStatus = $this->dms_model->addsave($formData);
$ResultNoticeResponse->addsave = $rStatus;
}else if ($serviceName=="dms.getDmsDetail") { //修改分销商详细页
$id = $dms_backdata->DmsDetail->dtid;
$dmsDetail = $this->dms_model->getDmsDetail($id);
$ResultNoticeResponse->DmsDetail = $dmsDetail;
}else if ($serviceName=="dms.editsave"){ //修改分销商保存
$formData = new stdClass() ;
$formData = $dms_backdata->formInfo;
$rStatus = $this->dms_model->editsave($formData);
$ResultNoticeResponse->editsave = $rStatus;
}else if ($serviceName=="dms.delete"){ //删除分销商
$id = $dms_backdata->DmsDetail->dtid;
$rStatus = $this->dms_model->dmdDelete($id);
$ResultNoticeResponse->dmsdelete = $rStatus;
}else if ($serviceName == "dms.payrecord"){ //支付记录
$arrKeyword = new stdClass();
$arrKeyword = $dms_backdata->arrKeyword;
$payrecord = $this->dms_model->payrecord($arrKeyword);
$resultData = $payrecord["data"];
$total = $payrecord["total"];
$ResultNoticeResponse->payrecord = new stdClass();
$ResultNoticeResponse->payrecord->data=$resultData;
$ResultNoticeResponse->payrecord->total = $total;
}else if ($serviceName=="dms.payrecord_addsave"){ //支付记录添加
$formData = new stdClass() ;
$formData = $dms_backdata->formInfo;
$rStatus = $this->dms_model->payrecord_addsave($formData);
$ResultNoticeResponse->addsave = $rStatus;
}else if ($serviceName=="dms.payrecord_delete"){ //支付记录删除
$id = $dms_backdata->payrecord->dp_id;
$htid = $dms_backdata->payrecord->dp_HtId;
$rStatus = $this->dms_model->payrecord_delete($id,$htid);
$ResultNoticeResponse->dmsdelete = $rStatus;
}else if ($serviceName=="dms.trainorder"){ //订单列表-火车
$arrKeyword = new stdClass();
$arrKeyword = $dms_backdata->arrKeyword;
$trainorder = $this->dms_model->trainorder($arrKeyword);
$resultData = $trainorder["data"];
$total = $trainorder["total"];
$ResultNoticeResponse->trainorder = new stdClass();
$ResultNoticeResponse->trainorder->data=$resultData;
$ResultNoticeResponse->trainorder->total = $total;
}else if ($serviceName == "dms.dmslisteasy"){ //所有分销商数据,下拉框使用
$getdmseasy = $this->dms_model->get_dmseasy();
$ResultNoticeResponse->getpayrule = $getdmseasy;
}else if ($serviceName=="dms.getpaydetail"){ //获取某一个分销商的所有财务信息
$id = $dms_backdata->htid;
$getpaydetail = $this->dms_model->get_paydetail($id);
$ResultNoticeResponse->getpaydetail = $getpaydetail;
}
}else{
$ResultNoticeResponse->returnCode = 0;
$ResultNoticeResponse->returnMsg = "messageIdentity is error!";
}
echo json_encode($ResultNoticeResponse);
}
}
/**
* @description:
* @return {*}
* @Date Changed:
*/
public function index()
{
}
public function login (){
}
public function addUser(){
}
}
/* End of file TrainDMS.php */

@ -0,0 +1,59 @@
<?php
class Des
{
function encrypt($string,$key)
{
$size = mcrypt_get_block_size('des','ecb');
//$string = mb_convert_encoding($string, 'GBK', 'UTF-8');
$string = $this->pkcs5_pad($string, $size);
$td = mcrypt_module_open('des', '', 'ecb', '');
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
function decrypt($string,$key)
{
$string = base64_decode($string);
$td = mcrypt_module_open('des', '', 'ecb', '');
//使用MCRYPT_DES算法,cbc模式
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td, $key, $iv);
//初始处理
$decrypted = mdecrypt_generic($td, $string);
//解密
mcrypt_generic_deinit($td);
//结束
mcrypt_module_close($td);
$result = $this->pkcs5_unpad($decrypted);
//$result = mb_convert_encoding($result, 'UTF-8', 'GBK');
return $result;
}
function pkcs5_pad($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)) {
return false;
}
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
return false;
}
return substr($text, 0, -1 * $pad);
}
}
?>

@ -93,7 +93,7 @@ class Api_model extends CI_Model {
$reust = ""; $reust = "";
//'新的GP没有设置以前的2-5人等价格导致读不出价格。把Gp价格放前面计算 //'新的GP没有设置以前的2-5人等价格导致读不出价格。把Gp价格放前面计算
$sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo $sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo
where CLI_NO=? and CLI_State=1005004 where CLI_NO=? and ( CLI_State = 1005003 or CLI_State=1005004) and CLI_Grade=7001
AND (CLI_DEI_SN= ? )"; AND (CLI_DEI_SN= ? )";
$query = $this->HT->query($sql,array($cli_no,$this->dei_sn)); $query = $this->HT->query($sql,array($cli_no,$this->dei_sn));
if (!$query->num_rows()>0){ if (!$query->num_rows()>0){
@ -137,7 +137,7 @@ class Api_model extends CI_Model {
CustomerLinePrice ON CustomerLineInfo.CLI_SN = CustomerLinePrice.CLP_CLI_SN INNER JOIN CustomerLinePrice ON CustomerLineInfo.CLI_SN = CustomerLinePrice.CLP_CLI_SN INNER JOIN
CustomerLineInfo2 ON CustomerLineInfo.CLI_SN = CustomerLineInfo2.CLI2_CLI_SN CustomerLineInfo2 ON CustomerLineInfo.CLI_SN = CustomerLineInfo2.CLI2_CLI_SN
where CLI_SN= ? and CLI2_LGC=? and (CLP_Area=1 or CLP_Area=2) where CLI_SN= ? and CLI2_LGC=? and (CLP_Area=1 or CLP_Area=2)
and CLI_State = 1005004 ORDER BY CLP_TwoToFiveAdultPrice"; and (CLI_State = 1005004 or CLI_State = 1005003) ORDER BY CLP_TwoToFiveAdultPrice";
$query = $this->HT->query($sql,array($CLI_SN,$this->CTLGC)); $query = $this->HT->query($sql,array($CLI_SN,$this->CTLGC));
if ($query->num_rows()>0){ if ($query->num_rows()>0){
$reust = $query->row()->CLP_TwoToFiveAdultPrice; $reust = $query->row()->CLP_TwoToFiveAdultPrice;

@ -0,0 +1,402 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dms_model extends CI_Model {
function __construct() {
parent::__construct();
$this->HT = $this->load->database('TOURMANAGER_LOCAL', TRUE);
$this->INFO = $this->load->database('INFORMATION_LOCAL', TRUE);
}
/**
* @description:
* @return {*}
* @Date Changed:
*/
function Login($username,$password){
$sql = "select top 1 dt_id,dt_username,dt_payrule,dt_usertype,dt_HtId from DMS_Distributor ";
$sql .= " where dt_status=1 and dt_username=? and dt_password=? ";
$query = $this->INFO->query($sql,array($username,$password));
if ($query->num_rows() > 0) {
return $query->row();
}else{
return null;
}
}
/**
* 订单列表
*/
function trainorder($arrKeyword){
$htid = $arrKeyword->htid ==false?-1:$arrKeyword->htid;
$page = $arrKeyword->page ==false?0:$arrKeyword->page;
$pagesize = $arrKeyword->per_page>0 ? $arrKeyword->per_page :20;
if ($page < 1) {
$page = 1;
}
$sql = " SELECT * from (
select row_number() over (order by COLI_ApplyDate desc) as rownumber, COLI_SN,COLI_ID,COLI_ApplyDate,COLI_servicetype,COLI_State,COLI_sourcetype,COLI_GUT_SN
,GUT_Title,GUT_FirstName,GUT_LastName
,tb2.*
from BIZ_ConfirmLineInfo bci
inner join BIZ_Guest bg on bci.COLI_GUT_SN = bg.GUT_SN
outer apply ( select top 1 COLD_COLI_SN,FlightsNo,DepartureCity,ArrivalCity from BIZ_ConfirmLineDetail inner join BIZ_FlightsOrderInfo
on FOI_COLD_SN=COLD_SN where COLD_COLI_SN=bci.COLI_SN) tb2
where COLI_State in(8,9,61,62)
AND COLI_servicetype='2'
and isnull(DeleteFlag,0)<>1 ";
if ($htid == 32083 || $htid==32084){
$sql .= " and COLI_sourcetype in(32083,32084) ";
}else {
$sql .= " and COLI_sourcetype ='".$htid."'";
}
$sql .= " )t ";
$sql2 = $sql." Where t.rownumber > ? And t.rownumber <= ?";
$begin = ($page - 1) * $pagesize;
$end = $begin + $pagesize;
$qurey = $this->HT->query($sql);
$count = $qurey->num_rows(); //总记录数
$qurey2 = $this->HT->query($sql2, array($begin, $end));
//return 数据和总数
return array('data' => $qurey2->result(), 'total' => $count);
}
/**
* @description:
* @param {*} $arrKeyword
* @return {*}
* @Date Changed:
*/
function get_DmList($arrKeyword){
$s_username = $arrKeyword->s_username ==false?"": trim($arrKeyword->s_username);
$s_ename = $arrKeyword->s_ename ==false?"": trim($arrKeyword->s_ename);
$page = $arrKeyword->page ==false?0:$arrKeyword->page;
$pagesize = $arrKeyword->per_page>0 ? $arrKeyword->per_page :20;
if ($page < 1) {
$page = 1;
}
$sql = "SELECT * from (
SELECT row_number() over (order by dt_id desc) as rownumber,dt_id,dt_username,dt_password,dt_HTid,dt_payrule,dt_usertype,isnull(dt_status,1) as dt_status
,(select dpr_rule from dms_payrule where dpr_id = dt_payrule) as dpr_rule
,(select syc2_CodeDiscribe FROM tourmanager.dbo.V_System_Code where SYC_Type=32 AND LGC_LGC=2 AND SYC_SN=dt_HtId) as dmsName
,isnull((select SUM(dp_paymoney) from DMS_PayRecord where dp_HtId=dt_HtId and dp_status>0),0) as TrainPaySum
from DMS_Distributor
)t where 1=1 ";
if ($s_username!=""){
$sql .= " and dt_username like '%".$s_username."%' ";
}
if ($s_ename!=""){
$sql .= " and dmsName like '%".$s_ename."%' ";
}
$sql2 = $sql . " and t.rownumber > ? And t.rownumber <= ? order by dt_id desc";
$begin = ($page - 1) * $pagesize;
$end = $begin + $pagesize;
$qurey = $this->INFO->query($sql);
$count = $qurey->num_rows(); //总记录数
$qurey2 = $this->INFO->query($sql2, array($begin, $end));
//计算订单总额
$returndata = $qurey2->result();
foreach ($returndata as $item) {
$paydetail = $this->get_paydetail($item->dt_HTid);
$trainOrderCount = $paydetail->count;
$trainOrderTotal = $paydetail->total;
$item->trainOrderCount = $trainOrderCount;
$item->trainOrderTotal = $trainOrderTotal;
}
//return 数据和总数
return array('data' => $returndata, 'total' => $count);
}
/**
* 获取支付规则列表数据
*/
function get_payrule(){
$sql = "select * from dms_payrule ";
$query = $this->INFO->query($sql);
return $query->result();
}
function get_dmseasy(){
$sql = " select * from DMS_Distributor where dt_usertype='distributor'
order by dt_username ";
$query = $this->INFO->query($sql);
return $query->result();
}
/**
* 获取某一个分销商的所有财务信息
*/
function get_paydetail($id){
$sql = "select count(*) as oCount from BIZ_ConfirmLineInfo where COLI_State in(8,9,61,62) AND COLI_servicetype='2' and isnull(DeleteFlag,0)<>1 ";
if ($id == 32083 || $id==32084){
$sql .= " and COLI_sourcetype in(32083,32084) ";
}else{
$sql .= " and COLI_sourcetype ='".$id."' ";
}
$query = $this->HT->query($sql);
if ($query->num_rows()>0){
$count = $query->row()->oCount;
}else{
$count = 0;
}
//付款规则
$sql = "select top 1 dt_payrule from DMS_Distributor where dt_htid='".$id."'";
$query = $this->INFO->query($sql);
if ($query->num_rows()>0){
$rule = $query->row()->dt_payrule;
}else{
$rule = 0;
}
if ($rule == 1){
$total = $count * 1;
}else if ($rule == 2 ){
$total = $count * 2;
}
else if ($rule == 3 ){
//按人数来算 ,1美元/人
$rSql = "select isnull(sum(COLD_PersonNum),0) as sumP from BIZ_ConfirmLineDetail
inner join BIZ_FlightsOrderInfo on FOI_COLD_SN=COLD_SN
where COLD_COLI_SN in( select COLI_SN from BIZ_ConfirmLineInfo where COLI_sourcetype='".$id."' and COLI_State in(8,9,61,62)
AND COLI_servicetype='2' and isnull(DeleteFlag,0)<>1)";
$queryR = $this->HT->query($rSql);
if ($queryR->num_rows()>0){
$total = $queryR->row()->sumP;
}else{
$total = 0 ;
}
}else {
$total = 0;
}
//已支付
$sql = "select isnull(SUM(dp_paymoney),0) as osum from DMS_PayRecord where dp_HtId= '".$id."'";
$query = $this->INFO->query($sql);
if ($query->num_rows()>0){
$sum = $query->row()->osum;
}else{
$sum = 0;
}
$result = new stdClass();
$result->count = $count;
$result->total = round($total,2);
$result->sum = round($sum,2);
return $result;
}
function addsave($formData){
$username = isset($formData->username)?$formData->username:"";
$password = isset($formData->password)?$formData->password:"";
$Htid = isset($formData->HtId)?$formData->HtId:0;
$payrule = isset($formData->payrule)?$formData->payrule:1;
$usertype = isset($formData->usertype)?$formData->usertype:"";
$result = new stdClass;
if ($usertype!=""){ //用户类型不为空才能进行添加
//先判断htid是否重复重复的话不允许添加.管理员不需要判断
$sql = "select * from DMS_Distributor where dt_HtId=? and dt_usertype='distributor'";
$query = $this->INFO->query($sql, array($Htid));
if ($query->num_rows() > 0) {
$result->status = 0;
$result->msg = "翰特编码重复,不允许添加!";
}else{
$sql = "insert into DMS_Distributor (dt_username,dt_password,dt_HtId,dt_payrule,dt_usertype) values (?,?,?,?,?)";
$query = $this->INFO->query($sql ,array($username,$password,$Htid,$payrule,$usertype));
if ($query === true){
$result->status = 1;
$result->msg = "数据添加成功!";
}else{
$result->status = 0;
$result->msg = "数据插入数据库失败,请联系管理员!";
}
}
}else{
$result->status = 0;
$result->msg = "用户类型错误!";
}
return $result;
}
/**
* 保存修改
*/
function editsave($formData){
$username = isset($formData->username)?$formData->username:"";
$password = isset($formData->password)?$formData->password:"";
$Htid = isset($formData->HtId)?$formData->HtId:0;
$payrule = isset($formData->payrule)?$formData->payrule:1;
$usertype = isset($formData->usertype)?$formData->usertype:"";
$id = isset($formData->id)?$formData->id:0;
$result = new stdClass;
if ($usertype!=""){ //用户类型不为空才能进行添加
//先判断htid是否重复重复的话不允许添加.管理员不需要判断
$sql = "select * from DMS_Distributor where dt_HtId=? and dt_usertype='distributor' and dt_id<>?";
$query = $this->INFO->query($sql, array($Htid,$id));
if ($query->num_rows() > 0) {
$result->status = 0;
$result->msg = "翰特编码重复,不允许修改!";
}else{
$sql = "update DMS_Distributor set dt_username=?,dt_password=?,dt_HtId=?,dt_payrule=?,dt_usertype=? where dt_id = ?";
$query = $this->INFO->query($sql ,array($username,$password,$Htid,$payrule,$usertype,$id));
if ($query === true){
$result->status = 1;
$result->msg = "数据修改成功!";
}else{
$result->status = 0;
$result->msg = "修改数据库失败,请联系管理员!";
}
}
}else{
$result->status = 0;
$result->msg = "用户类型错误!";
}
return $result;
}
/**
* @description: 获取供应商详细信息
* @param {*} $id
* @return {*}
* @Date Changed:
*/
function getDmsDetail($id){
$sql = "select top 1 * from DMS_Distributor where dt_id = ? ";
$query = $this->INFO->query($sql ,array($id));
return $query->result();
}
/**
* @description: 删除分销商
* @param {*} $id
* @return {*}
* @Date Changed:
*/
function dmdDelete($id){
$sql = " delete from DMS_Distributor where dt_id = ? ";
$qurey = $this->INFO->query($sql ,array($id));
$result = new stdClass;
if ($qurey){
$result->status = 1;
$result->msg = "数据删除成功!";
}else{
$result->status = 0;
$result->msg = "数据删除失败,请联系管理员!";
}
return $result;
}
/**
* 支付记录
*/
function payRecord($arrKeyword){
$htid = $arrKeyword->htid ==false?0:$arrKeyword->htid;
$page = $arrKeyword->page ==false?0:$arrKeyword->page;
$pagesize = $arrKeyword->per_page>0 ? $arrKeyword->per_page :20;
if ($page < 1) {
$page = 1;
}
$sql = " SELECT * from (
SELECT row_number() over (order by dp_id desc) as rownumber,*
,(select syc2_CodeDiscribe FROM tourmanager.dbo.V_System_Code where SYC_Type=32 AND LGC_LGC=2 AND SYC_SN=dp_HtId) as dmsName
from DMS_PayRecord
where dp_HtId=?
)t ";
$sql2 = $sql." Where t.rownumber > ? And t.rownumber <= ?";
$begin = ($page - 1) * $pagesize;
$end = $begin + $pagesize;
$qurey = $this->INFO->query($sql,array($htid));
$count = $qurey->num_rows(); //总记录数
$qurey2 = $this->INFO->query($sql2, array($htid,$begin, $end));
//return 数据和总数
return array('data' => $qurey2->result(), 'total' => $count);
}
/**
* @description:
* @return {*}
* @Date Changed:
*/
function payrecord_addsave($formData){
$paymoney = isset($formData->paymoney)?$formData->paymoney:0;
$currency = isset($formData->currency)?$formData->currency:"USD";
$HtId = isset($formData->HtId)?$formData->HtId:0;
$paytype = isset($formData->paytype)?$formData->paytype:"Train";
$filluser = isset($formData->filluser)?$formData->filluser:0;
$result = new stdClass;
if ($HtId!=0){ //必须有翰特ID才能进行添加
$sql = " insert into DMS_PayRecord (dp_HtId,dp_paymoney,dp_currency,dp_paytype,dp_addtime,dp_filluser,dp_status) values(?,?,?,?,GETDATE(),?,1)";
$query = $this->INFO->query($sql ,array($HtId,$paymoney,$currency,$paytype,$filluser));
if ($query === true){
$result->status = 1;
$result->msg = "数据添加成功!";
}else{
$result->status = 0;
$result->msg = "数据插入数据库失败,请联系管理员!";
}
}else{
$result->status = 0;
$result->msg = "企业的翰特ID有错误";
}
return $result;
}
/***
*
*/
function payrecord_delete($id,$htid){
$sql = " update DMS_PayRecord set dp_status = 0 where dp_id=? and dp_HtId=? ";
$qurey = $this->INFO->query($sql ,array($id,$htid));
$result = new stdClass;
if ($qurey){
$result->status = 1;
$result->msg = "数据删除成功!";
}else{
$result->status = 0;
$result->msg = "数据删除失败,请联系管理员!";
}
return $result;
}
}

@ -80,10 +80,11 @@ class Confirm extends CI_Controller {
$passport = $this->input->post('passport'); $passport = $this->input->post('passport');
$expiration_date = $this->input->post('passport_expiration_date'); $expiration_date = $this->input->post('passport_expiration_date');
$nationality = $this->input->post('nationality'); $nationality = $this->input->post('nationality');
$occupation=$this->input->post('occupation'); $occupation=$this->input->post('occupation');
$contact_phone = '座机:' . $this->input->post('landline') . '/手机:' . $this->input->post('mobile'); $country_code = $this->input->post('country_code');
$contact_phone = $country_code . ' ' . $this->input->post('mobile');
$COLI_SN = $this->input->post('COLI_SN'); $COLI_SN = $this->input->post('COLI_SN');
$visitor_link = $this->input->post('visitor_link'); $visitor_link = $this->input->post('visitor_link');
$COLI_ID = $this->input->post('COLI_ID'); $COLI_ID = $this->input->post('COLI_ID');
@ -97,7 +98,7 @@ class Confirm extends CI_Controller {
//已经确认过 //已经确认过
$had_save = $this->Order_model->get_visitor_link($COLI_SN, $visitor_link); $had_save = $this->Order_model->get_visitor_link($COLI_SN, $visitor_link);
if (!empty($had_save)) { if (!empty($had_save)) {
echo json_encode(array('status' => 'ok')); echo json_encode(array('status' => 'ok'));
return; return;
@ -130,6 +131,10 @@ class Confirm extends CI_Controller {
$birthday_tmp = date('Y-m-d H:i:s', strtotime($birthday[$key])); $birthday_tmp = date('Y-m-d H:i:s', strtotime($birthday[$key]));
$expiration_date_tmp = date('Y-m-d H:i:s', strtotime($expiration_date[$key])); $expiration_date_tmp = date('Y-m-d H:i:s', strtotime($expiration_date[$key]));
// 现在表单只用填写第一个客人的手机,所以其他客人
if ($key > 0) {
$contact_phone = '';
}
$MEI_SN = $this->Order_model->add_customer_info($occupation[$key],$gender[$key], $nationality[$key], $MEI_FirstName, $MEI_LastName, $passport[$key], $expiration_date_tmp, $birthday_tmp, $MEI_Memo, $MEI_Street, '', $contact_phone, 0, $COLI_SN, $visitor_link,$MEI_ArrivalFlightNo,$MEI_ArrivalTime,$MEI_DepartureFlightNo,$MEI_DepartureTime); $MEI_SN = $this->Order_model->add_customer_info($occupation[$key],$gender[$key], $nationality[$key], $MEI_FirstName, $MEI_LastName, $passport[$key], $expiration_date_tmp, $birthday_tmp, $MEI_Memo, $MEI_Street, '', $contact_phone, 0, $COLI_SN, $visitor_link,$MEI_ArrivalFlightNo,$MEI_ArrivalTime,$MEI_DepartureFlightNo,$MEI_DepartureTime);
} }
} }
@ -158,7 +163,7 @@ class Confirm extends CI_Controller {
echo json_encode(array('status' => 'no')); echo json_encode(array('status' => 'no'));
} }
} }
function review() { function review() {
header('Content-type: application/json;charset=utf-8'); header('Content-type: application/json;charset=utf-8');
$data = array(); $data = array();

@ -1,3 +1,4 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -6,8 +7,8 @@
<title> <title>
Passport Information for All the Group Members Passport Information for All the Group Members
</title> </title>
<meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport"> <meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport">
<link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css,/css/customer_center_data/bootstrap-datetimepicker.min.css&v=202302061045" rel="stylesheet"> <link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css&v=202405161016" rel="stylesheet">
<style> <style>
body { body {
margin: 0; margin: 0;
@ -115,14 +116,14 @@
.inputTerm input { .inputTerm input {
width: 100%; width: 100%;
margin: 0; margin: 0;
font-size: 22px; font-size: 20px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
height: 60px; height: 60px;
padding: 15px 15px 0 20px; padding: 15px 15px 0 20px;
border-radius: 4px; border-radius: 4px;
color: #000 color: #000
} }
.inputTerm input.number { width: 51%; height: 57px;}
button#tmsubmit { button#tmsubmit {
background: #ad1818; background: #ad1818;
text-align: center; text-align: center;
@ -138,12 +139,13 @@
} }
button.add_traveler_button { button.add_traveler_button {
font-size: 21px; font-size: 20px;
color: #ad1818; color: #ad1818;
padding: 8px; padding: 5px 30px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
border-radius: 4px; border-radius: 4px;
width: 300px; margin-top: 30px;
margin-right: 10px;
} }
@ -226,7 +228,18 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
width: 100%; width: 100%;
margin-top: 15px; margin-top: 15px;
} }
select.code {
font-size: 18px;
color: #000;
height: 57px;
padding-left: 10px;
background: #fff;
border-radius: 4px;
border: 1px solid #d1d1d1;
width: auto;
position: relative;
top: -8px;
}
p.top_info { p.top_info {
width: 860px; width: 860px;
margin: 0 auto; margin: 0 auto;
@ -303,7 +316,7 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
} }
select.country_code, select.country_code,
.selectionBlock, input.arrivalDate { .selectionBlock, input.arrivalDate, .inputTerm input.number, select.code {
width: 100%; width: 100%;
} }
@ -397,9 +410,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
information to book all your hotels, transportation, and activities. If the information you information to book all your hotels, transportation, and activities. If the information you
provide is incorrect, you would not be able to board your flight or trains, and therefore provide is incorrect, you would not be able to board your flight or trains, and therefore
reissuing of tickets would be at your expense!</p> reissuing of tickets would be at your expense!</p>
<div class="traveler_info"> <div class="traveler_info">
<h3 data-header>Traveler 1</h3> <h3 data-header>Primary contact</h3>
<div class="selectionBlock"> <div class="selectionBlock">
<select name="gender[]" class="gender_pick"> <select name="gender[]" class="gender_pick">
<option value="100001">Mr.</option> <option value="100001">Mr.</option>
@ -424,15 +436,16 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div id="name_error_msg" class="hidden">Please enter your name.</div> <div id="name_error_msg" class="hidden">Please enter your name.</div>
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="passport[]" required="" class="number"> <input type="text" name="passport[]" required="" class="number" style="width:100%;">
<label> <label>
Passport No. Passport No.
</label> </label>
</div> </div>
<div id="passport_error_msg" class="hidden">Please enter your passport number.</div> <div id="passport_error_msg" class="hidden">Please enter your passport number.</div>
<select class="country_code" name="nationality[]"> <select class="country_code" name="nationality[]">
<option value="18">Australia</option> <option value="" disabled="" selected="">Select your nationality</option>
<option value="18">Australia</option>
<option value="5">Canada</option> <option value="5">Canada</option>
<option value="1">China</option> <option value="1">China</option>
<option value="8">France</option> <option value="8">France</option>
@ -441,7 +454,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="19">Malaysia</option> <option value="19">Malaysia</option>
<option value="27">Singapore</option> <option value="27">Singapore</option>
<option value="7">United Kingdom</option> <option value="7">United Kingdom</option>
<option value="3" selected="selected">United States</option> <option value="3">United States</option>
<option value="458">Afghanistan</option> <option value="458">Afghanistan</option>
<option value="459">Albania</option> <option value="459">Albania</option>
<option value="460">Algeria</option> <option value="460">Algeria</option>
@ -669,20 +682,280 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="664">Zaire</option> <option value="664">Zaire</option>
<option value="665">Zambia</option> <option value="665">Zambia</option>
<option value="666">Zimbabwe</option> <option value="666">Zimbabwe</option>
<option value="678">Serbia</option>
</select> </select>
<div class="inputTerm" id='phoneNumberDiv'>
<select class="code" name="country_code" id="country_code">
<option value="" disabled selected>Please select your country code</option>
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option style="font-weight: 600;" value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option style="font-weight: 600;" value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="France +33">France&nbsp; &nbsp;+33</option>
<option style="font-weight: 600;" value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option style="font-weight: 600; " value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option style="font-weight: 600; " value="Mexico +52">Mexico&nbsp; &nbsp;+52</option>
<option style="font-weight: 600; " value="Netherlands +31">Netherlands&nbsp; &nbsp;+31</option>
<option style="font-weight: 600; " value="Singapore +65">Singapore&nbsp; &nbsp;+65</option>
<option value="Afghanistan +93">Afghanistan &nbsp; &nbsp;+93</option>
<option value="Albania +355">Albania &nbsp; &nbsp;+355</option>
<option value="Algeria +213">Algeria&nbsp; &nbsp;+213</option>
<option value="American Samoa +1">American Samoa&nbsp; &nbsp;+1684</option>
<option value="Andorra +376">Andorra&nbsp; &nbsp;+376</option>
<option value="Angola +244">Angola&nbsp; &nbsp;+244</option>
<option value="Anguilla +1">Anguilla&nbsp; &nbsp;+1264</option>
<option value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option value="Antigua and Barbuda +1">Antigua and Barbuda&nbsp; &nbsp;+1268</option>
<option value="Argentina +54">Argentina&nbsp; &nbsp;+54</option>
<option value="Armenia +374">Armenia &nbsp; &nbsp;+374</option>
<option value="Aruba +297">Aruba&nbsp; &nbsp;+297</option>
<option value="Ascension Island +247">Ascension Island&nbsp; &nbsp;+247</option>
<option value="Austria +43">Austria&nbsp; &nbsp;+43</option>
<option value="Azerbaijan +994">Azerbaijan&nbsp; &nbsp;+994</option>
<option value="Bahamas +1">Bahamas&nbsp; &nbsp;+1242</option>
<option value="Bahrain +973">Bahrain&nbsp; &nbsp;+973</option>
<option value="Bangladesh +880">Bangladesh&nbsp; &nbsp;+880</option>
<option value="Barbados +1">Barbados&nbsp; &nbsp;+1246</option>
<option value="Belarus +375">Belarus&nbsp; &nbsp;+375</option>
<option value="Belgium +32">Belgium&nbsp; &nbsp;+32</option>
<option value="Belize +501">Belize&nbsp; &nbsp;+501</option>
<option value="Benin +229">Benin&nbsp; &nbsp;+229</option>
<option value="Bermuda +1">Bermuda&nbsp; &nbsp;+1441</option>
<option value="Bhutan +975">Bhutan&nbsp; &nbsp;+975</option>
<option value="Bolivia +591">Bolivia&nbsp; &nbsp;+591</option>
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina&nbsp; &nbsp;+387</option>
<option value="Botswana +267">Botswana&nbsp; &nbsp;+267</option>
<option value="Brazil +55">Brazil&nbsp; &nbsp;+55</option>
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory&nbsp; &nbsp;+246
</option>
<option value="British Virgin Islands +1">British Virgin Islands&nbsp; &nbsp;+1284</option>
<option value="Brunei +673">Brunei&nbsp; &nbsp;+673</option>
<option value="Bulgaria +359">Bulgaria &nbsp; &nbsp;+359</option>
<option value="Burkina Faso +226">Burkina Faso&nbsp; &nbsp;+226</option>
<option value="Burundi +257">Burundi&nbsp; &nbsp;+257</option>
<option value="Cambodia +855">Cambodia&nbsp; &nbsp;+855</option>
<option value="Cameroon +237">Cameroon&nbsp; &nbsp;+237</option>
<option value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option value="Cape Verde +238">Cape Verde&nbsp; &nbsp;+238</option>
<option value="Caribbean Netherlands +599">Caribbean Netherlands&nbsp; &nbsp;+599</option>
<option value="Cayman Islands +1">Cayman Islands&nbsp; &nbsp;+1345</option>
<option value="Central African Republic +236">Central African Republic&nbsp; &nbsp;+236</option>
<option value="Chad +235">Chad&nbsp; &nbsp;+235</option>
<option value="Chile +56">Chile&nbsp; &nbsp;+56</option>
<option value="China +86">China&nbsp; &nbsp;+86</option>
<option value="Christmas Island +61">Christmas Island&nbsp; &nbsp;+6189164</option>
<option value="Cocos Islands +61">Cocos Islands&nbsp; &nbsp;+6189162</option>
<option value="Colombia +57">Colombia&nbsp; &nbsp;+57</option>
<option value="Comoros +269">Comoros&nbsp; &nbsp;+269</option>
<option value="Congo +243">Congo (DRC)&nbsp; &nbsp;+243</option>
<option value="Congo +242">Congo (Republic)&nbsp; &nbsp;+242</option>
<option value="Cook Islands +682">Cook Islands&nbsp; &nbsp;+682</option>
<option value="Costa Rica +506">Costa Rica&nbsp; &nbsp;+506</option>
<option value="Côte d'Ivoire +225">Côte d'Ivoire&nbsp; &nbsp;+225</option>
<option value="Croatia +385">Croatia&nbsp; &nbsp;+385</option>
<option value="Cuba +53">Cuba&nbsp; &nbsp;+53</option>
<option value="Curaçao +599">Curaçao&nbsp; &nbsp;+599</option>
<option value="Cyprus +357">Cyprus&nbsp; &nbsp;+357</option>
<option value="Czech Republic +420">Czech Republic&nbsp; &nbsp;+420</option>
<option value="Denmark +45">Denmark&nbsp; &nbsp;+45</option>
<option value="Djibouti +253">Djibouti&nbsp; &nbsp;+253</option>
<option value="Dominica +1">Dominica&nbsp; &nbsp;+1767</option>
<option value="Dominican Republic +1">Dominican Republic&nbsp; &nbsp;+1809</option>
<option value="Ecuador +593">Ecuador&nbsp; &nbsp;+593</option>
<option value="Egypt +20">Egypt&nbsp; &nbsp;+20</option>
<option value="El Salvador +503">El Salvador&nbsp; &nbsp;+503</option>
<option value="Equatorial Guinea +240">Equatorial Guinea&nbsp; &nbsp;+240</option>
<option value="Eritrea +291">Eritrea&nbsp; &nbsp;+291</option>
<option value="Estonia +372">Estonia&nbsp; &nbsp;+372</option>
<option value="Eswatini +268">Eswatini&nbsp; &nbsp;+268</option>
<option value="Ethiopia +251">Ethiopia&nbsp; &nbsp;+251</option>
<option value="Falkland Islands +500">Falkland Islands&nbsp; &nbsp;+500</option>
<option value="Faroe Islands +298">Faroe Islands&nbsp; &nbsp;+298</option>
<option value="Fiji +679">Fiji&nbsp; &nbsp;+679</option>
<option value="Finland +358">Finland&nbsp; &nbsp;+358</option>
<option value="France +33">France&nbsp; &nbsp;+33</option>
<option value="French Guiana +594">French Guiana&nbsp; &nbsp;+594</option>
<option value="French Polynesia +689">French Polynesia&nbsp; &nbsp;+689</option>
<option value="Gabon +241">Gabon&nbsp; &nbsp;+241</option>
<option value="Gambia +220">Gambia&nbsp; &nbsp;+220</option>
<option value="Georgia +995">Georgia&nbsp; &nbsp;+995</option>
<option value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option value="Ghana +233">Ghana&nbsp; &nbsp;+233</option>
<option value="Gibraltar +350">Gibraltar&nbsp; &nbsp;+350</option>
<option value="Greece +30">Greece&nbsp; &nbsp;+30</option>
<option value="Greenland +299">Greenland&nbsp; &nbsp;+299</option>
<option value="Grenada +1">Grenada&nbsp; &nbsp;+1473</option>
<option value="Guadeloupe +590">Guadeloupe&nbsp; &nbsp;+590</option>
<option value="Guam +1">Guam&nbsp; &nbsp;+1671</option>
<option value="Guatemala +502">Guatemala&nbsp; &nbsp;+502</option>
<option value="Guernsey +44">Guernsey&nbsp; &nbsp;+441481</option>
<option value="Guinea +224">Guinea&nbsp; &nbsp;+224</option>
<option value="Guinea-Bissau +245">Guinea-Bissau&nbsp; &nbsp;+245</option>
<option value="Guyana +592">Guyana&nbsp; &nbsp;+592</option>
<option value="Haiti +509">Haiti&nbsp; &nbsp;+509</option>
<option value="Honduras +504">Honduras&nbsp; &nbsp;+504</option>
<option value="Hong Kong +852">Hong Kong&nbsp; &nbsp;+852</option>
<option value="Hungary +36">Hungary&nbsp; &nbsp;+36</option>
<option value="Iceland +354">Iceland&nbsp; &nbsp;+354</option>
<option value="India +91">India&nbsp; &nbsp;+91</option>
<option value="Indonesia +62">Indonesia&nbsp; &nbsp;+62</option>
<option value="Iran +98">Iran&nbsp; &nbsp;+98</option>
<option value="Iraq +964">Iraq&nbsp; &nbsp;+964</option>
<option value="Ireland +353">Ireland&nbsp; &nbsp;+353</option>
<option value="Isle of Man +44">Isle of Man&nbsp; &nbsp;+44</option>
<option value="Israel +972">Israel&nbsp; &nbsp;+972</option>
<option value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option value="Jamaica +1">Jamaica&nbsp; &nbsp;+1876</option>
<option value="Japan +81">Japan&nbsp; &nbsp;+81</option>
<option value="Jersey +44">Jersey&nbsp; &nbsp;+44</option>
<option value="Jordan +962">Jordan&nbsp; &nbsp;+962</option>
<option value="Kazakhstan +7">Kazakhstan &nbsp; &nbsp;+7</option>
<option value="Kenya +254">Kenya&nbsp; &nbsp;+254</option>
<option value="Kiribati +686">Kiribati&nbsp; &nbsp;+686</option>
<option value="Kosovo +383">Kosovo&nbsp; &nbsp;+383</option>
<option value="Kuwait +965">Kuwait&nbsp; &nbsp;+965</option>
<option value="Kyrgyzstan +996">Kyrgyzstan &nbsp; &nbsp;+996</option>
<option value="Laos +856">Laos&nbsp; &nbsp;+856</option>
<option value="Latvia +371">Latvia &nbsp; &nbsp;+371</option>
<option value="Lebanon +961">Lebanon&nbsp; &nbsp;+961</option>
<option value="Lesotho +266">Lesotho&nbsp; &nbsp;+266</option>
<option value="Liberia +231">Liberia&nbsp; &nbsp;+231</option>
<option value="Libya +218">Libya&nbsp; &nbsp;+218</option>
<option value="Liechtenstein +423">Liechtenstein&nbsp; &nbsp;+423</option>
<option value="Lithuania +370">Lithuania&nbsp; &nbsp;+370</option>
<option value="Luxembourg +352">Luxembourg&nbsp; &nbsp;+352</option>
<option value="Macau +853">Macau&nbsp; &nbsp;+853</option>
<option value="Macedonia +389">Macedonia&nbsp; &nbsp;+389</option>
<option value="Madagascar +261">Madagascar&nbsp; &nbsp;+261</option>
<option value="Malawi +265">Malawi&nbsp; &nbsp;+265</option>
<option value="Malaysia +60">Malaysia&nbsp; &nbsp;+60</option>
<option value="Maldives +960">Maldives&nbsp; &nbsp;+960</option>
<option value="Mali +223">Mali&nbsp; &nbsp;+223</option>
<option value="Malta +356">Malta&nbsp; &nbsp;+356</option>
<option value="Marshall +692">Marshall Islands&nbsp; &nbsp;+692</option>
<option value="Martinique +596">Martinique&nbsp; &nbsp;+596</option>
<option value="Mauritania +222">Mauritania&nbsp; &nbsp;+222</option>
<option value="Mauritius +230">Mauritius&nbsp; &nbsp;+230</option>
<option value="Mayotte +262">Mayotte&nbsp; &nbsp;+262</option>
<option value="Micronesia +691">Micronesia&nbsp; &nbsp;+691</option>
<option value="Moldova +373">Moldova&nbsp; &nbsp;+373</option>
<option value="Monaco +377">Monaco&nbsp; &nbsp;+377</option>
<option value="Mongolia +976">Mongolia&nbsp; &nbsp;+976</option>
<option value="Montenegro +382">Montenegro&nbsp; &nbsp;+382</option>
<option value="Montserrat +1">Montserrat&nbsp; &nbsp;+1664</option>
<option value="Morocco +212">Morocco&nbsp; &nbsp;+212</option>
<option value="Mozambique +258">Mozambique&nbsp; &nbsp;+258</option>
<option value="Myanmar +95">Myanmar &nbsp; &nbsp;+95</option>
<option value="Namibia +264">Namibia&nbsp; &nbsp;+264</option>
<option value="Nauru +674">Nauru&nbsp; &nbsp;+674</option>
<option value="Nepal +977">Nepal&nbsp; &nbsp;+977</option>
<option value="New Caledonia +687">New Caledonia&nbsp; &nbsp;+687</option>
<option value="New Zealand +64">New Zealand&nbsp; &nbsp;+64</option>
<option value="Nicaragua +505">Nicaragua&nbsp; &nbsp;+505</option>
<option value="Niger +227">Niger&nbsp; &nbsp;+227</option>
<option value="Nigeria +234">Nigeria&nbsp; &nbsp;+234</option>
<option value="Niue +683">Niue&nbsp; &nbsp;+683</option>
<option value="Norfolk Island +672">Norfolk Island&nbsp; &nbsp;+6723</option>
<option value="North Korea +850">North Korea&nbsp; &nbsp;+850</option>
<option value="Northern Mariana Islands +1">Northern Mariana Islands&nbsp; &nbsp;+1670</option>
<option value="Norway +47">Norway&nbsp; &nbsp;+47</option>
<option value="Oman +968">Oman&nbsp; &nbsp;+968</option>
<option value="Pakistan +92">Pakistan&nbsp; &nbsp;+92</option>
<option value="Palau +680">Palau&nbsp; &nbsp;+680</option>
<option value="Palestine +970">Palestine &nbsp; &nbsp;+970</option>
<option value="Panama +507">Panama &nbsp; &nbsp;+507</option>
<option value="Papua New Guinea 675">Papua New Guinea&nbsp; &nbsp;+675</option>
<option value="Paraguay +595">Paraguay&nbsp; &nbsp;+595</option>
<option value="Peru +51">Peru &nbsp; &nbsp;+51</option>
<option value="Philippines +63">Philippines&nbsp; &nbsp;+63</option>
<option value="Poland +48">Poland&nbsp; &nbsp;+48</option>
<option value="Portugal +351">Portugal&nbsp; &nbsp;+351</option>
<option value="Puerto Rico +1">Puerto Rico&nbsp; &nbsp;+1787</option>
<option value="Qatar +974">Qatar&nbsp; &nbsp;+974</option>
<option value="Réunion +262">Réunion&nbsp; &nbsp;+262</option>
<option value="Romania +40">Romania&nbsp; &nbsp;+40</option>
<option value="Russia +7">Russia&nbsp; &nbsp;+7</option>
<option value="Rwanda +250">Rwanda&nbsp; &nbsp;+250</option>
<option value="Saint Barthélemy +590">Saint Barthélemy&nbsp; &nbsp;+590</option>
<option value="Saint Helena +290">Saint Helena&nbsp; &nbsp;+290</option>
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis&nbsp; &nbsp;+1869</option>
<option value="Saint Lucia +1">Saint Lucia&nbsp; &nbsp;+1758</option>
<option value="Saint Martin +590">Saint Martin&nbsp; &nbsp;+590</option>
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon&nbsp; &nbsp;+508</option>
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines&nbsp; &nbsp;+1784
</option>
<option value="Samoa +685">Samoa&nbsp; &nbsp;+685</option>
<option value="San Marino +378">San Marino&nbsp; &nbsp;+378</option>
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe&nbsp; &nbsp;+239</option>
<option value="Saudi Arabia +966">Saudi Arabia &nbsp; &nbsp;+966</option>
<option value="Senegal +221">Senegal &nbsp; &nbsp;+221</option>
<option value="Serbia +381">Serbia&nbsp; &nbsp;+381</option>
<option value="Seychelles +248">Seychelles&nbsp; &nbsp;+248</option>
<option value="Sierra Leone +232">Sierra Leone&nbsp; &nbsp;+232</option>
<option value="Sint Maarten +1">Sint Maarten&nbsp; &nbsp;+1721</option>
<option value="Slovakia +421">Slovakia&nbsp; &nbsp;+421</option>
<option value="Slovenia +386">Slovenia&nbsp; &nbsp;+386</option>
<option value="Solomon Islands +677">Solomon Islands&nbsp; &nbsp;+677</option>
<option value="Somalia +252">Somalia&nbsp; &nbsp;+252</option>
<option value="South Africa +27">South Africa&nbsp; &nbsp;+27</option>
<option value="South Korea +82">South Korea&nbsp; &nbsp;+82</option>
<option value="South Sudan +211">South Sudan&nbsp; &nbsp;+211</option>
<option value="Spain +34">Spain&nbsp; &nbsp;+34</option>
<option value="Sri Lanka +94">Sri Lanka &nbsp; &nbsp;+94</option>
<option value="Sudan +249">Sudan&nbsp; &nbsp;+249</option>
<option value="Suriname">Suriname&nbsp; &nbsp;+597</option>
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen&nbsp; &nbsp;+47</option>
<option value="Sweden +46">Sweden&nbsp; &nbsp;+46</option>
<option value="Switzerland +41">Switzerland&nbsp; &nbsp;+41</option>
<option value="Syria +963">Syria &nbsp; &nbsp;+963</option>
<option value="Taiwan +886">Taiwan&nbsp; &nbsp;+886</option>
<option value="Tajikistan +992">Tajikistan&nbsp; &nbsp;+992</option>
<option value="Tanzania +255">Tanzania&nbsp; &nbsp;+255</option>
<option value="Thailand +66">Thailand&nbsp; &nbsp;+66</option>
<option value="Timor-Leste +670">Timor-Leste&nbsp; &nbsp;+670</option>
<option value="Togo +228">Togo&nbsp; &nbsp;+228</option>
<option value="Tokelau +690">Tokelau&nbsp; &nbsp;+690</option>
<option value="Tonga +676">Tonga&nbsp; &nbsp;+676</option>
<option value="Trinidad and Tobago +1">Trinidad and Tobago&nbsp; &nbsp;+1868</option>
<option value="Tunisia +216">Tunisia&nbsp; &nbsp;+216</option>
<option value="Turkey +90">Turkey&nbsp; &nbsp;+90</option>
<option value="Turkmenistan +993">Turkmenistan&nbsp; &nbsp;+993</option>
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands&nbsp; &nbsp;+1649</option>
<option value="Tuvalu +688">Tuvalu&nbsp; &nbsp;+688</option>
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands&nbsp; &nbsp;+1340</option>
<option value="Uganda +256">Uganda&nbsp; &nbsp;+256</option>
<option value="Ukraine +380">Ukraine&nbsp; &nbsp;+380</option>
<option value="United Arab Emirates +971">United Arab Emirates &nbsp; &nbsp;+971</option>
<option value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option value="United States +1">United States&nbsp; &nbsp;+1</option>
<option value="Uruguay +598">Uruguay&nbsp; &nbsp;+598</option>
<option value="Uzbekistan +998">Uzbekistan&nbsp; &nbsp;+998</option>
<option value="Vanuatu +678">Vanuatu&nbsp; &nbsp;+678</option>
<option value="Vatican City +39">Vatican City&nbsp; &nbsp;+379</option>
<option value="Venezuela +58">Venezuela&nbsp; &nbsp;+58</option>
<option value="Vietnam +84">Vietnam&nbsp; &nbsp;+84</option>
<option value="Wallis and Futuna +681">Wallis and Futuna&nbsp; &nbsp;+681</option>
<option value="Western Sahara +212">Western Sahara &nbsp; &nbsp;+21228</option>
<option value="Yemen +967">Yemen&nbsp; &nbsp;+967</option>
<option value="Zambia +260">Zambia&nbsp; &nbsp;+260</option>
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select>
<input type="text" name="mobile" required="" class="number" placeholder="Phone number">
</div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of birth</p> <p> Date of birth</p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of expiration </p> <p> Date of expiration </p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div id="birth_error_msg" class="hidden">Please select your date of birth.</div> <div id="birth_error_msg" class="hidden">Please select your date of birth.</div>
@ -699,67 +972,23 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="Self-emloyed person">Self-emloyed person</option> <option value="Self-emloyed person">Self-emloyed person</option>
<option value="Others">Others</option> <option value="Others">Others</option>
</select> </select>
</div>
<button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button> <button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button>
</div>
<div id="inquiryBox">
<h2>Your contact information (optional)</h2>
<p>Having a phone number, especially with WhatsApp/iMessage capability will help us contact you in
case of emergency.</p>
<p>Phone No.</p>
<div class="inputTerm">
<input type="text" name="mobile" required="" class="number">
<label>
including country code and area code
</label>
</div>
<div class="selectionBlock">
<p>Home address</p>
<div class="inputTerm">
<input type="text" name="address_street" required="">
<label>
Street
</label>
</div>
</div> </div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_city" required="">
<label>
City
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_state" required="">
<label>
State
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_country" required="">
<label>
Country
</label>
</div>
</div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Flight Information (optional)</h2> <h2>Your Flight Information</h2>
<p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off. <p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off.
Please ensure the details you provide are correct. You can skip this if your don't need airport Please ensure the details you provide are correct. You can skip this if your don't need airport
transfer service.</p> transfer service.</p>
<p>If you are not yet purchase your airline and insurance, please fill in the TBC in the link and provide those information to your consultant or keep update after you confirm them.</p>
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_ArrivalFlightNo" required=""> <input type="text" name="MEI_ArrivalFlightNo">
<label> <label>
Arrival flight No. Arrival flight No.
</label> </label>
@ -768,18 +997,18 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div class="selectionBlock"> <div class="selectionBlock">
<p>Arrival date</p> <p>Arrival date</p>
<div class="inputTerm"> <div class="inputTerm">
<input type="date" name="MEI_ArrivalDate" required=""> <input type="date" name="MEI_ArrivalDate" min="1753-01-01" max="9999-12-31">
</div> </div>
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="time" name="MEI_ArrivalTime"> <input type="time" name="MEI_ArrivalTime">
</div> </div>
</div> </div>
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_DepartureFlightNo" required=""> <input type="text" name="MEI_DepartureFlightNo">
<label> <label>
Departure Flight No. Departure Flight No.
</label> </label>
@ -788,25 +1017,21 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div class="selectionBlock"> <div class="selectionBlock">
<p>Departure date</p> <p>Departure date</p>
<div class="inputTerm"> <div class="inputTerm">
<input type="date" name="MEI_DepartureDate" required=""> <input type="date" name="MEI_DepartureDate" min="1753-01-01" max="9999-12-31">
</div> </div>
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="time" name="MEI_DepartureTime"> <input type="time" name="MEI_DepartureTime">
</div> </div>
</div> </div>
</div> </div>
<div id="inquiryBox">
<h2>Your Special Request (optional)</h2>
<p></p>
<textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Emergency Contact Information (optional)</h2> <h2>Emergency Contact Information</h2>
<div class="emergency_title">(in case an unlikely event happens when you are travelling)</div> <div class="emergency_title">(in case an unlikely event happens when you are travelling)</div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
@ -843,17 +1068,18 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Insurance Information (Optional)</h2> <h2>Your Insurance Information and Special Request (optional)</h2>
<textarea id="insurance_information" name="insurance_information" style="resize:none;"></textarea>
<textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div> </div>
<div class="inquiryBtn">
<div class="inquiryBtn">
<input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>"> <input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>">
<input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>"> <input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>">
<input type="hidden" name="customer_username" value="<?php echo $username; ?>"> <input type="hidden" name="customer_username" value="<?php echo $username; ?>">
<input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>"> <input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>">
<input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>"> <input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>">
<input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>"> <input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>">
<input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>"> <input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>">
@ -882,8 +1108,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<!-- reviewModal end--> <!-- reviewModal end-->
<script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js,/js/customer_center_data/jquery-ui-timepicker-addon.js&v=2019092401"></script> <script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js&v=202405161016"></script>
<script> <script>
function submit_info_form () { function submit_info_form () {
var $btn = $("#btn-add-userinfo").button('loading'); var $btn = $("#btn-add-userinfo").button('loading');
@ -946,18 +1172,29 @@ select.gender_pick {border: 1px solid #d1d1d1;
} }
}); });
} }
$(function() { $(function() {
var $travelerTemplate = $(".traveler_info:first").clone(); var $travelerTemplate = $(".traveler_info:first").clone();
//添加客户 //添加客户
$("#add_traveler_button").click(function() { $("#add_traveler_button").click(function () {addTraveler()});
var $addTraveler = $travelerTemplate.clone();
function addTraveler() {
var travelerCount = $(".traveler_info").length + 1; var travelerCount = $(".traveler_info").length + 1;
var travelerId = 'traveler' + travelerCount;
var $addTraveler = $travelerTemplate.clone();
$addTraveler.attr('id', travelerId);
$addTraveler.find('#phoneNumberDiv').remove();
$addTraveler.find('[data-header]').text('Traveler ' + travelerCount); $addTraveler.find('[data-header]').text('Traveler ' + travelerCount);
$('#add_traveler_button').before($addTraveler);
}); $addTravelerButton = $addTraveler.find('#add_traveler_button');
$addTravelerButton.attr('id', 'add_traveler_button' + travelerCount);
$addTravelerButton.click(function(){addTraveler()});
$deleteTravelerButton = $('<button class="add_traveler_button" type="button">- Delete Traveler ' + travelerCount + '</button>');
$deleteTravelerButton.click(function(){$('#'+travelerId).remove();});
$addTraveler.append($deleteTravelerButton);
$(".traveler_info:last").after($addTraveler);
}
}); });
</script> </script>
</body> </body>
</html>

@ -6,8 +6,8 @@
<title> <title>
Passport Information for All the Group Members Passport Information for All the Group Members
</title> </title>
<meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport"> <meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport">
<link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css,/css/customer_center_data/bootstrap-datetimepicker.min.css&v=202302061045" rel="stylesheet"> <link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css&v=202405161016" rel="stylesheet">
<style> <style>
body { body {
margin: 0; margin: 0;
@ -35,7 +35,7 @@
.wholeWrap2 { .wholeWrap2 {
background: #000; background: #555;
width: 100%; width: 100%;
display: inline-block; display: inline-block;
margin-bottom: -4px; margin-bottom: -4px;
@ -115,14 +115,14 @@
.inputTerm input { .inputTerm input {
width: 100%; width: 100%;
margin: 0; margin: 0;
font-size: 22px; font-size: 20px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
height: 60px; height: 60px;
padding: 15px 15px 0 20px; padding: 15px 15px 0 20px;
border-radius: 4px; border-radius: 4px;
color: #000 color: #000
} }
.inputTerm input.number { width: 51%; height: 57px;}
button#tmsubmit { button#tmsubmit {
background: #ad1818; background: #ad1818;
text-align: center; text-align: center;
@ -138,12 +138,13 @@
} }
button.add_traveler_button { button.add_traveler_button {
font-size: 21px; font-size: 20px;
color: #ad1818; color: #ad1818;
padding: 8px; padding: 5px 30px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
border-radius: 4px; border-radius: 4px;
width: 300px; margin-top: 30px;
margin-right: 10px;
} }
@ -227,7 +228,18 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
width: 100%; width: 100%;
margin-top: 15px; margin-top: 15px;
} }
select.code {
font-size: 18px;
color: #000;
height: 57px;
padding-left: 10px;
background: #fff;
border-radius: 4px;
border: 1px solid #d1d1d1;
width: auto;
position: relative;
top: -8px;
}
p.top_info { p.top_info {
width: 860px; width: 860px;
margin: 0 auto; margin: 0 auto;
@ -242,7 +254,7 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
.traveler_info { .traveler_info {
border-bottom: 3px dashed #d1d1d1; border-bottom: 3px dashed #d1d1d1;
padding-bottom: 50px; padding-bottom: 50px;
margin-bottom: 50px; margin-bottom: 20px;
} }
.emergency_title { .emergency_title {
@ -304,7 +316,7 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
} }
select.country_code, select.country_code,
.selectionBlock, input.arrivalDate { .selectionBlock, input.arrivalDate, .inputTerm input.number, select.code {
width: 100%; width: 100%;
} }
@ -400,8 +412,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
reissuing of tickets would be at your expense!</p> reissuing of tickets would be at your expense!</p>
<div class="traveler_info"> <div class="traveler_info">
<h3 data-header>Traveler 1</h3> <h3 data-header>Primary contact</h3>
<div class="selectionBlock"> <div class="selectionBlock">
<select name="gender[]" class="gender_pick"> <select name="gender[]" class="gender_pick">
<option value="100001">Mr.</option> <option value="100001">Mr.</option>
@ -426,7 +438,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div id="name_error_msg" class="hidden">Please enter your name.</div> <div id="name_error_msg" class="hidden">Please enter your name.</div>
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="passport[]" required="" class="number"> <input type="text" name="passport[]" required="" class="number" style="width: 100%;">
<label> <label>
Passport No. Passport No.
</label> </label>
@ -434,7 +446,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div id="passport_error_msg" class="hidden">Please enter your passport number.</div> <div id="passport_error_msg" class="hidden">Please enter your passport number.</div>
<select class="country_code" name="nationality[]"> <select class="country_code" name="nationality[]">
<option value="18">Australia</option> <option value="" disabled="" selected="">Select your nationality</option>
<option value="18">Australia</option>
<option value="5">Canada</option> <option value="5">Canada</option>
<option value="1">China</option> <option value="1">China</option>
<option value="8">France</option> <option value="8">France</option>
@ -443,7 +456,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="19">Malaysia</option> <option value="19">Malaysia</option>
<option value="27">Singapore</option> <option value="27">Singapore</option>
<option value="7">United Kingdom</option> <option value="7">United Kingdom</option>
<option value="3" selected="selected">United States</option> <option value="3">United States</option>
<option value="458">Afghanistan</option> <option value="458">Afghanistan</option>
<option value="459">Albania</option> <option value="459">Albania</option>
<option value="460">Algeria</option> <option value="460">Algeria</option>
@ -671,20 +684,279 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="664">Zaire</option> <option value="664">Zaire</option>
<option value="665">Zambia</option> <option value="665">Zambia</option>
<option value="666">Zimbabwe</option> <option value="666">Zimbabwe</option>
<option value="678">Serbia</option>
</select> </select>
<div class="inputTerm" id='phoneNumberDiv'>
<select class="code" name="country_code" id="country_code">
<option value="" disabled selected>Please select your country code</option>
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option style="font-weight: 600;" value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option style="font-weight: 600;" value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="France +33">France&nbsp; &nbsp;+33</option>
<option style="font-weight: 600;" value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option style="font-weight: 600; " value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option style="font-weight: 600; " value="Mexico +52">Mexico&nbsp; &nbsp;+52</option>
<option style="font-weight: 600; " value="Netherlands +31">Netherlands&nbsp; &nbsp;+31</option>
<option style="font-weight: 600; " value="Singapore +65">Singapore&nbsp; &nbsp;+65</option>
<option value="Afghanistan +93">Afghanistan &nbsp; &nbsp;+93</option>
<option value="Albania +355">Albania &nbsp; &nbsp;+355</option>
<option value="Algeria +213">Algeria&nbsp; &nbsp;+213</option>
<option value="American Samoa +1">American Samoa&nbsp; &nbsp;+1684</option>
<option value="Andorra +376">Andorra&nbsp; &nbsp;+376</option>
<option value="Angola +244">Angola&nbsp; &nbsp;+244</option>
<option value="Anguilla +1">Anguilla&nbsp; &nbsp;+1264</option>
<option value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option value="Antigua and Barbuda +1">Antigua and Barbuda&nbsp; &nbsp;+1268</option>
<option value="Argentina +54">Argentina&nbsp; &nbsp;+54</option>
<option value="Armenia +374">Armenia &nbsp; &nbsp;+374</option>
<option value="Aruba +297">Aruba&nbsp; &nbsp;+297</option>
<option value="Ascension Island +247">Ascension Island&nbsp; &nbsp;+247</option>
<option value="Austria +43">Austria&nbsp; &nbsp;+43</option>
<option value="Azerbaijan +994">Azerbaijan&nbsp; &nbsp;+994</option>
<option value="Bahamas +1">Bahamas&nbsp; &nbsp;+1242</option>
<option value="Bahrain +973">Bahrain&nbsp; &nbsp;+973</option>
<option value="Bangladesh +880">Bangladesh&nbsp; &nbsp;+880</option>
<option value="Barbados +1">Barbados&nbsp; &nbsp;+1246</option>
<option value="Belarus +375">Belarus&nbsp; &nbsp;+375</option>
<option value="Belgium +32">Belgium&nbsp; &nbsp;+32</option>
<option value="Belize +501">Belize&nbsp; &nbsp;+501</option>
<option value="Benin +229">Benin&nbsp; &nbsp;+229</option>
<option value="Bermuda +1">Bermuda&nbsp; &nbsp;+1441</option>
<option value="Bhutan +975">Bhutan&nbsp; &nbsp;+975</option>
<option value="Bolivia +591">Bolivia&nbsp; &nbsp;+591</option>
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina&nbsp; &nbsp;+387</option>
<option value="Botswana +267">Botswana&nbsp; &nbsp;+267</option>
<option value="Brazil +55">Brazil&nbsp; &nbsp;+55</option>
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory&nbsp; &nbsp;+246
</option>
<option value="British Virgin Islands +1">British Virgin Islands&nbsp; &nbsp;+1284</option>
<option value="Brunei +673">Brunei&nbsp; &nbsp;+673</option>
<option value="Bulgaria +359">Bulgaria &nbsp; &nbsp;+359</option>
<option value="Burkina Faso +226">Burkina Faso&nbsp; &nbsp;+226</option>
<option value="Burundi +257">Burundi&nbsp; &nbsp;+257</option>
<option value="Cambodia +855">Cambodia&nbsp; &nbsp;+855</option>
<option value="Cameroon +237">Cameroon&nbsp; &nbsp;+237</option>
<option value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option value="Cape Verde +238">Cape Verde&nbsp; &nbsp;+238</option>
<option value="Caribbean Netherlands +599">Caribbean Netherlands&nbsp; &nbsp;+599</option>
<option value="Cayman Islands +1">Cayman Islands&nbsp; &nbsp;+1345</option>
<option value="Central African Republic +236">Central African Republic&nbsp; &nbsp;+236</option>
<option value="Chad +235">Chad&nbsp; &nbsp;+235</option>
<option value="Chile +56">Chile&nbsp; &nbsp;+56</option>
<option value="China +86">China&nbsp; &nbsp;+86</option>
<option value="Christmas Island +61">Christmas Island&nbsp; &nbsp;+6189164</option>
<option value="Cocos Islands +61">Cocos Islands&nbsp; &nbsp;+6189162</option>
<option value="Colombia +57">Colombia&nbsp; &nbsp;+57</option>
<option value="Comoros +269">Comoros&nbsp; &nbsp;+269</option>
<option value="Congo +243">Congo (DRC)&nbsp; &nbsp;+243</option>
<option value="Congo +242">Congo (Republic)&nbsp; &nbsp;+242</option>
<option value="Cook Islands +682">Cook Islands&nbsp; &nbsp;+682</option>
<option value="Costa Rica +506">Costa Rica&nbsp; &nbsp;+506</option>
<option value="Côte d'Ivoire +225">Côte d'Ivoire&nbsp; &nbsp;+225</option>
<option value="Croatia +385">Croatia&nbsp; &nbsp;+385</option>
<option value="Cuba +53">Cuba&nbsp; &nbsp;+53</option>
<option value="Curaçao +599">Curaçao&nbsp; &nbsp;+599</option>
<option value="Cyprus +357">Cyprus&nbsp; &nbsp;+357</option>
<option value="Czech Republic +420">Czech Republic&nbsp; &nbsp;+420</option>
<option value="Denmark +45">Denmark&nbsp; &nbsp;+45</option>
<option value="Djibouti +253">Djibouti&nbsp; &nbsp;+253</option>
<option value="Dominica +1">Dominica&nbsp; &nbsp;+1767</option>
<option value="Dominican Republic +1">Dominican Republic&nbsp; &nbsp;+1809</option>
<option value="Ecuador +593">Ecuador&nbsp; &nbsp;+593</option>
<option value="Egypt +20">Egypt&nbsp; &nbsp;+20</option>
<option value="El Salvador +503">El Salvador&nbsp; &nbsp;+503</option>
<option value="Equatorial Guinea +240">Equatorial Guinea&nbsp; &nbsp;+240</option>
<option value="Eritrea +291">Eritrea&nbsp; &nbsp;+291</option>
<option value="Estonia +372">Estonia&nbsp; &nbsp;+372</option>
<option value="Eswatini +268">Eswatini&nbsp; &nbsp;+268</option>
<option value="Ethiopia +251">Ethiopia&nbsp; &nbsp;+251</option>
<option value="Falkland Islands +500">Falkland Islands&nbsp; &nbsp;+500</option>
<option value="Faroe Islands +298">Faroe Islands&nbsp; &nbsp;+298</option>
<option value="Fiji +679">Fiji&nbsp; &nbsp;+679</option>
<option value="Finland +358">Finland&nbsp; &nbsp;+358</option>
<option value="France +33">France&nbsp; &nbsp;+33</option>
<option value="French Guiana +594">French Guiana&nbsp; &nbsp;+594</option>
<option value="French Polynesia +689">French Polynesia&nbsp; &nbsp;+689</option>
<option value="Gabon +241">Gabon&nbsp; &nbsp;+241</option>
<option value="Gambia +220">Gambia&nbsp; &nbsp;+220</option>
<option value="Georgia +995">Georgia&nbsp; &nbsp;+995</option>
<option value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option value="Ghana +233">Ghana&nbsp; &nbsp;+233</option>
<option value="Gibraltar +350">Gibraltar&nbsp; &nbsp;+350</option>
<option value="Greece +30">Greece&nbsp; &nbsp;+30</option>
<option value="Greenland +299">Greenland&nbsp; &nbsp;+299</option>
<option value="Grenada +1">Grenada&nbsp; &nbsp;+1473</option>
<option value="Guadeloupe +590">Guadeloupe&nbsp; &nbsp;+590</option>
<option value="Guam +1">Guam&nbsp; &nbsp;+1671</option>
<option value="Guatemala +502">Guatemala&nbsp; &nbsp;+502</option>
<option value="Guernsey +44">Guernsey&nbsp; &nbsp;+441481</option>
<option value="Guinea +224">Guinea&nbsp; &nbsp;+224</option>
<option value="Guinea-Bissau +245">Guinea-Bissau&nbsp; &nbsp;+245</option>
<option value="Guyana +592">Guyana&nbsp; &nbsp;+592</option>
<option value="Haiti +509">Haiti&nbsp; &nbsp;+509</option>
<option value="Honduras +504">Honduras&nbsp; &nbsp;+504</option>
<option value="Hong Kong +852">Hong Kong&nbsp; &nbsp;+852</option>
<option value="Hungary +36">Hungary&nbsp; &nbsp;+36</option>
<option value="Iceland +354">Iceland&nbsp; &nbsp;+354</option>
<option value="India +91">India&nbsp; &nbsp;+91</option>
<option value="Indonesia +62">Indonesia&nbsp; &nbsp;+62</option>
<option value="Iran +98">Iran&nbsp; &nbsp;+98</option>
<option value="Iraq +964">Iraq&nbsp; &nbsp;+964</option>
<option value="Ireland +353">Ireland&nbsp; &nbsp;+353</option>
<option value="Isle of Man +44">Isle of Man&nbsp; &nbsp;+44</option>
<option value="Israel +972">Israel&nbsp; &nbsp;+972</option>
<option value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option value="Jamaica +1">Jamaica&nbsp; &nbsp;+1876</option>
<option value="Japan +81">Japan&nbsp; &nbsp;+81</option>
<option value="Jersey +44">Jersey&nbsp; &nbsp;+44</option>
<option value="Jordan +962">Jordan&nbsp; &nbsp;+962</option>
<option value="Kazakhstan +7">Kazakhstan &nbsp; &nbsp;+7</option>
<option value="Kenya +254">Kenya&nbsp; &nbsp;+254</option>
<option value="Kiribati +686">Kiribati&nbsp; &nbsp;+686</option>
<option value="Kosovo +383">Kosovo&nbsp; &nbsp;+383</option>
<option value="Kuwait +965">Kuwait&nbsp; &nbsp;+965</option>
<option value="Kyrgyzstan +996">Kyrgyzstan &nbsp; &nbsp;+996</option>
<option value="Laos +856">Laos&nbsp; &nbsp;+856</option>
<option value="Latvia +371">Latvia &nbsp; &nbsp;+371</option>
<option value="Lebanon +961">Lebanon&nbsp; &nbsp;+961</option>
<option value="Lesotho +266">Lesotho&nbsp; &nbsp;+266</option>
<option value="Liberia +231">Liberia&nbsp; &nbsp;+231</option>
<option value="Libya +218">Libya&nbsp; &nbsp;+218</option>
<option value="Liechtenstein +423">Liechtenstein&nbsp; &nbsp;+423</option>
<option value="Lithuania +370">Lithuania&nbsp; &nbsp;+370</option>
<option value="Luxembourg +352">Luxembourg&nbsp; &nbsp;+352</option>
<option value="Macau +853">Macau&nbsp; &nbsp;+853</option>
<option value="Macedonia +389">Macedonia&nbsp; &nbsp;+389</option>
<option value="Madagascar +261">Madagascar&nbsp; &nbsp;+261</option>
<option value="Malawi +265">Malawi&nbsp; &nbsp;+265</option>
<option value="Malaysia +60">Malaysia&nbsp; &nbsp;+60</option>
<option value="Maldives +960">Maldives&nbsp; &nbsp;+960</option>
<option value="Mali +223">Mali&nbsp; &nbsp;+223</option>
<option value="Malta +356">Malta&nbsp; &nbsp;+356</option>
<option value="Marshall +692">Marshall Islands&nbsp; &nbsp;+692</option>
<option value="Martinique +596">Martinique&nbsp; &nbsp;+596</option>
<option value="Mauritania +222">Mauritania&nbsp; &nbsp;+222</option>
<option value="Mauritius +230">Mauritius&nbsp; &nbsp;+230</option>
<option value="Mayotte +262">Mayotte&nbsp; &nbsp;+262</option>
<option value="Micronesia +691">Micronesia&nbsp; &nbsp;+691</option>
<option value="Moldova +373">Moldova&nbsp; &nbsp;+373</option>
<option value="Monaco +377">Monaco&nbsp; &nbsp;+377</option>
<option value="Mongolia +976">Mongolia&nbsp; &nbsp;+976</option>
<option value="Montenegro +382">Montenegro&nbsp; &nbsp;+382</option>
<option value="Montserrat +1">Montserrat&nbsp; &nbsp;+1664</option>
<option value="Morocco +212">Morocco&nbsp; &nbsp;+212</option>
<option value="Mozambique +258">Mozambique&nbsp; &nbsp;+258</option>
<option value="Myanmar +95">Myanmar &nbsp; &nbsp;+95</option>
<option value="Namibia +264">Namibia&nbsp; &nbsp;+264</option>
<option value="Nauru +674">Nauru&nbsp; &nbsp;+674</option>
<option value="Nepal +977">Nepal&nbsp; &nbsp;+977</option>
<option value="New Caledonia +687">New Caledonia&nbsp; &nbsp;+687</option>
<option value="New Zealand +64">New Zealand&nbsp; &nbsp;+64</option>
<option value="Nicaragua +505">Nicaragua&nbsp; &nbsp;+505</option>
<option value="Niger +227">Niger&nbsp; &nbsp;+227</option>
<option value="Nigeria +234">Nigeria&nbsp; &nbsp;+234</option>
<option value="Niue +683">Niue&nbsp; &nbsp;+683</option>
<option value="Norfolk Island +672">Norfolk Island&nbsp; &nbsp;+6723</option>
<option value="North Korea +850">North Korea&nbsp; &nbsp;+850</option>
<option value="Northern Mariana Islands +1">Northern Mariana Islands&nbsp; &nbsp;+1670</option>
<option value="Norway +47">Norway&nbsp; &nbsp;+47</option>
<option value="Oman +968">Oman&nbsp; &nbsp;+968</option>
<option value="Pakistan +92">Pakistan&nbsp; &nbsp;+92</option>
<option value="Palau +680">Palau&nbsp; &nbsp;+680</option>
<option value="Palestine +970">Palestine &nbsp; &nbsp;+970</option>
<option value="Panama +507">Panama &nbsp; &nbsp;+507</option>
<option value="Papua New Guinea 675">Papua New Guinea&nbsp; &nbsp;+675</option>
<option value="Paraguay +595">Paraguay&nbsp; &nbsp;+595</option>
<option value="Peru +51">Peru &nbsp; &nbsp;+51</option>
<option value="Philippines +63">Philippines&nbsp; &nbsp;+63</option>
<option value="Poland +48">Poland&nbsp; &nbsp;+48</option>
<option value="Portugal +351">Portugal&nbsp; &nbsp;+351</option>
<option value="Puerto Rico +1">Puerto Rico&nbsp; &nbsp;+1787</option>
<option value="Qatar +974">Qatar&nbsp; &nbsp;+974</option>
<option value="Réunion +262">Réunion&nbsp; &nbsp;+262</option>
<option value="Romania +40">Romania&nbsp; &nbsp;+40</option>
<option value="Russia +7">Russia&nbsp; &nbsp;+7</option>
<option value="Rwanda +250">Rwanda&nbsp; &nbsp;+250</option>
<option value="Saint Barthélemy +590">Saint Barthélemy&nbsp; &nbsp;+590</option>
<option value="Saint Helena +290">Saint Helena&nbsp; &nbsp;+290</option>
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis&nbsp; &nbsp;+1869</option>
<option value="Saint Lucia +1">Saint Lucia&nbsp; &nbsp;+1758</option>
<option value="Saint Martin +590">Saint Martin&nbsp; &nbsp;+590</option>
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon&nbsp; &nbsp;+508</option>
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines&nbsp; &nbsp;+1784
</option>
<option value="Samoa +685">Samoa&nbsp; &nbsp;+685</option>
<option value="San Marino +378">San Marino&nbsp; &nbsp;+378</option>
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe&nbsp; &nbsp;+239</option>
<option value="Saudi Arabia +966">Saudi Arabia &nbsp; &nbsp;+966</option>
<option value="Senegal +221">Senegal &nbsp; &nbsp;+221</option>
<option value="Serbia +381">Serbia&nbsp; &nbsp;+381</option>
<option value="Seychelles +248">Seychelles&nbsp; &nbsp;+248</option>
<option value="Sierra Leone +232">Sierra Leone&nbsp; &nbsp;+232</option>
<option value="Sint Maarten +1">Sint Maarten&nbsp; &nbsp;+1721</option>
<option value="Slovakia +421">Slovakia&nbsp; &nbsp;+421</option>
<option value="Slovenia +386">Slovenia&nbsp; &nbsp;+386</option>
<option value="Solomon Islands +677">Solomon Islands&nbsp; &nbsp;+677</option>
<option value="Somalia +252">Somalia&nbsp; &nbsp;+252</option>
<option value="South Africa +27">South Africa&nbsp; &nbsp;+27</option>
<option value="South Korea +82">South Korea&nbsp; &nbsp;+82</option>
<option value="South Sudan +211">South Sudan&nbsp; &nbsp;+211</option>
<option value="Spain +34">Spain&nbsp; &nbsp;+34</option>
<option value="Sri Lanka +94">Sri Lanka &nbsp; &nbsp;+94</option>
<option value="Sudan +249">Sudan&nbsp; &nbsp;+249</option>
<option value="Suriname">Suriname&nbsp; &nbsp;+597</option>
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen&nbsp; &nbsp;+47</option>
<option value="Sweden +46">Sweden&nbsp; &nbsp;+46</option>
<option value="Switzerland +41">Switzerland&nbsp; &nbsp;+41</option>
<option value="Syria +963">Syria &nbsp; &nbsp;+963</option>
<option value="Taiwan +886">Taiwan&nbsp; &nbsp;+886</option>
<option value="Tajikistan +992">Tajikistan&nbsp; &nbsp;+992</option>
<option value="Tanzania +255">Tanzania&nbsp; &nbsp;+255</option>
<option value="Thailand +66">Thailand&nbsp; &nbsp;+66</option>
<option value="Timor-Leste +670">Timor-Leste&nbsp; &nbsp;+670</option>
<option value="Togo +228">Togo&nbsp; &nbsp;+228</option>
<option value="Tokelau +690">Tokelau&nbsp; &nbsp;+690</option>
<option value="Tonga +676">Tonga&nbsp; &nbsp;+676</option>
<option value="Trinidad and Tobago +1">Trinidad and Tobago&nbsp; &nbsp;+1868</option>
<option value="Tunisia +216">Tunisia&nbsp; &nbsp;+216</option>
<option value="Turkey +90">Turkey&nbsp; &nbsp;+90</option>
<option value="Turkmenistan +993">Turkmenistan&nbsp; &nbsp;+993</option>
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands&nbsp; &nbsp;+1649</option>
<option value="Tuvalu +688">Tuvalu&nbsp; &nbsp;+688</option>
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands&nbsp; &nbsp;+1340</option>
<option value="Uganda +256">Uganda&nbsp; &nbsp;+256</option>
<option value="Ukraine +380">Ukraine&nbsp; &nbsp;+380</option>
<option value="United Arab Emirates +971">United Arab Emirates &nbsp; &nbsp;+971</option>
<option value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option value="United States +1">United States&nbsp; &nbsp;+1</option>
<option value="Uruguay +598">Uruguay&nbsp; &nbsp;+598</option>
<option value="Uzbekistan +998">Uzbekistan&nbsp; &nbsp;+998</option>
<option value="Vanuatu +678">Vanuatu&nbsp; &nbsp;+678</option>
<option value="Vatican City +39">Vatican City&nbsp; &nbsp;+379</option>
<option value="Venezuela +58">Venezuela&nbsp; &nbsp;+58</option>
<option value="Vietnam +84">Vietnam&nbsp; &nbsp;+84</option>
<option value="Wallis and Futuna +681">Wallis and Futuna&nbsp; &nbsp;+681</option>
<option value="Western Sahara +212">Western Sahara &nbsp; &nbsp;+21228</option>
<option value="Yemen +967">Yemen&nbsp; &nbsp;+967</option>
<option value="Zambia +260">Zambia&nbsp; &nbsp;+260</option>
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select>
<input type="text" name="mobile" required="" class="number" placeholder="Phone number">
</div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of birth</p> <p> Date of birth</p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of expiration </p> <p> Date of expiration </p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div id="birth_error_msg" class="hidden">Please select your date of birth.</div> <div id="birth_error_msg" class="hidden">Please select your date of birth.</div>
@ -701,67 +973,22 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="Self-emloyed person">Self-emloyed person</option> <option value="Self-emloyed person">Self-emloyed person</option>
<option value="Others">Others</option> <option value="Others">Others</option>
</select> </select>
</div>
<button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button> <button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button>
</div>
<div id="inquiryBox">
<h2>Your contact information (optional)</h2>
<p>Having a phone number, especially with WhatsApp/iMessage capability will help us contact you in
case of emergency.</p>
<p>Phone No.</p>
<div class="inputTerm">
<input type="text" name="mobile" required="" class="number">
<label>
including country code and area code
</label>
</div> </div>
<div class="selectionBlock">
<p>Home address</p>
<div class="inputTerm">
<input type="text" name="address_street" required="">
<label>
Street
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_city" required="">
<label>
City
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_state" required="">
<label>
State
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_country" required="">
<label>
Country
</label>
</div>
</div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Flight Information (optional)</h2> <h2>Your Flight Information</h2>
<p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off. <p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off.
Please ensure the details you provide are correct. You can skip this if your don't need airport Please ensure the details you provide are correct. You can skip this if your don't need airport
transfer service.</p> transfer service.</p>
<p>If you are not yet purchase your airline and insurance, please fill in the TBC in the link and provide those information to your consultant or keep update after you confirm them.</p>
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_ArrivalFlightNo" required=""> <input type="text" name="MEI_ArrivalFlightNo">
<label> <label>
Arrival flight No. Arrival flight No.
</label> </label>
@ -770,13 +997,13 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<p>Arrival time</p> <p>Arrival time</p>
<div class="inputTerm"> <div class="inputTerm">
<input type="datetime-local" name="MEI_ArrivalTime" required=""> <input type="datetime-local" name="MEI_ArrivalTime" min="1753-01-01T00:00" max="9999-12-31T00:00">
</div> </div>
</div> </div>
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_DepartureFlightNo" required=""> <input type="text" name="MEI_DepartureFlightNo">
<label> <label>
Departure Flight No. Departure Flight No.
</label> </label>
@ -785,20 +1012,12 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div class="selectionBlock" style="width: 100%;"> <div class="selectionBlock" style="width: 100%;">
<p>Departure time</p> <p>Departure time</p>
<div class="inputTerm"> <div class="inputTerm">
<input type="datetime-local" name="MEI_DepartureTime" required=""> <input type="datetime-local" name="MEI_DepartureTime" min="1753-01-01T00:00" max="9999-12-31T00:00">
</div> </div>
</div> </div>
</div> </div>
<div id="inquiryBox">
<h2>Your Special Request (optional)</h2>
<p></p>
<textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Emergency Contact Information (optional)</h2> <h2>Emergency Contact Information</h2>
<div class="emergency_title">(in case an unlikely event happens when you are travelling)</div> <div class="emergency_title">(in case an unlikely event happens when you are travelling)</div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
@ -835,17 +1054,16 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Insurance Information (Optional)</h2> <h2>Your Insurance Information and Other Special Request (optional)</h2>
<textarea id="insurance_information" name="insurance_information" style="resize:none;"></textarea>
</div>
<div class="inquiryBtn"> <textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div>
<div class="inquiryBtn">
<input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>"> <input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>">
<input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>"> <input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>">
<input type="hidden" name="customer_username" value="<?php echo $username; ?>"> <input type="hidden" name="customer_username" value="<?php echo $username; ?>">
<input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>"> <input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>">
<input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>"> <input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>">
<input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>"> <input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>">
<input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>"> <input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>">
@ -874,8 +1092,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<!-- reviewModal end--> <!-- reviewModal end-->
<script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js,/js/customer_center_data/jquery-ui-timepicker-addon.js&v=2019092401"></script> <script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js&v=202405161016"></script>
<script> <script>
function submit_info_form () { function submit_info_form () {
var $btn = $("#btn-add-userinfo").button('loading'); var $btn = $("#btn-add-userinfo").button('loading');
@ -938,16 +1156,29 @@ select.gender_pick {border: 1px solid #d1d1d1;
} }
}); });
} }
$(function() { $(function() {
var $travelerTemplate = $(".traveler_info:first").clone(); var $travelerTemplate = $(".traveler_info:first").clone();
//添加客户 //添加客户
$("#add_traveler_button").click(function() { $("#add_traveler_button").click(function () {addTraveler()});
var $addTraveler = $travelerTemplate.clone();
function addTraveler() {
var travelerCount = $(".traveler_info").length + 1; var travelerCount = $(".traveler_info").length + 1;
var travelerId = 'traveler' + travelerCount;
var $addTraveler = $travelerTemplate.clone();
$addTraveler.attr('id', travelerId);
$addTraveler.find('#phoneNumberDiv').remove();
$addTraveler.find('[data-header]').text('Traveler ' + travelerCount); $addTraveler.find('[data-header]').text('Traveler ' + travelerCount);
$('#add_traveler_button').before($addTraveler);
}); $addTravelerButton = $addTraveler.find('#add_traveler_button');
$addTravelerButton.attr('id', 'add_traveler_button' + travelerCount);
$addTravelerButton.click(function(){addTraveler()});
$deleteTravelerButton = $('<button class="add_traveler_button" type="button">- Delete Traveler ' + travelerCount + '</button>');
$deleteTravelerButton.click(function(){$('#'+travelerId).remove();});
$addTraveler.append($deleteTravelerButton);
$(".traveler_info:last").after($addTraveler);
}
}); });
</script> </script>
</body> </body>

@ -1,3 +1,4 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -6,8 +7,8 @@
<title> <title>
Passport Information for All the Group Members Passport Information for All the Group Members
</title> </title>
<meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport"> <meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport">
<link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css,/css/customer_center_data/bootstrap-datetimepicker.min.css&v=202302061045" rel="stylesheet"> <link href="https://data.chinahighlights.com/css/min.php?f=/css/customer_center_data/bootstrap.min.css&v=202405161016" rel="stylesheet">
<style> <style>
body { body {
margin: 0; margin: 0;
@ -115,14 +116,14 @@
.inputTerm input { .inputTerm input {
width: 100%; width: 100%;
margin: 0; margin: 0;
font-size: 22px; font-size: 20px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
height: 60px; height: 60px;
padding: 15px 15px 0 20px; padding: 15px 15px 0 20px;
border-radius: 4px; border-radius: 4px;
color: #000 color: #000
} }
.inputTerm input.number { width: 51%; height: 57px;}
button#tmsubmit { button#tmsubmit {
background: #ad1818; background: #ad1818;
text-align: center; text-align: center;
@ -138,15 +139,15 @@
} }
button.add_traveler_button { button.add_traveler_button {
font-size: 21px; font-size: 20px;
color: #ad1818; color: #ad1818;
padding: 8px; padding: 5px 30px;
border: 1px solid #d1d1d1; border: 1px solid #d1d1d1;
border-radius: 4px; border-radius: 4px;
width: 300px; margin-top: 30px;
margin-right: 10px;
} }
#Date_Start { #Date_Start {
width: 310px; width: 310px;
font-size: 19px; font-size: 19px;
@ -226,7 +227,18 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
width: 100%; width: 100%;
margin-top: 15px; margin-top: 15px;
} }
select.code {
font-size: 18px;
color: #000;
height: 57px;
padding-left: 10px;
background: #fff;
border-radius: 4px;
border: 1px solid #d1d1d1;
width: auto;
position: relative;
top: -8px;
}
p.top_info { p.top_info {
width: 860px; width: 860px;
margin: 0 auto; margin: 0 auto;
@ -303,7 +315,7 @@ input.arrivalDate {height: 50px; width: 347px; font-size: 19px; padding: 5px 15p
} }
select.country_code, select.country_code,
.selectionBlock, input.arrivalDate { .selectionBlock, input.arrivalDate, .inputTerm input.number, select.code {
width: 100%; width: 100%;
} }
@ -400,7 +412,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
reissuing of tickets would be at your expense!</p> reissuing of tickets would be at your expense!</p>
<div class="traveler_info"> <div class="traveler_info">
<h3 data-header>Traveler 1</h3> <h3 data-header>Primary contact</h3>
<div class="selectionBlock"> <div class="selectionBlock">
<select name="gender[]" class="gender_pick"> <select name="gender[]" class="gender_pick">
@ -426,7 +438,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div id="name_error_msg" class="hidden">Please enter your name.</div> <div id="name_error_msg" class="hidden">Please enter your name.</div>
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="passport[]" required="" class="number"> <input type="text" name="passport[]" required="" class="number" style="width:100%;">
<label> <label>
Passport No. Passport No.
</label> </label>
@ -434,7 +446,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
<div id="passport_error_msg" class="hidden">Please enter your passport number.</div> <div id="passport_error_msg" class="hidden">Please enter your passport number.</div>
<select class="country_code" name="nationality[]"> <select class="country_code" name="nationality[]">
<option value="18">Australia</option> <option value="" disabled="" selected="">Select your nationality</option>
<option value="18">Australia</option>
<option value="5">Canada</option> <option value="5">Canada</option>
<option value="1">China</option> <option value="1">China</option>
<option value="8">France</option> <option value="8">France</option>
@ -443,7 +456,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="19">Malaysia</option> <option value="19">Malaysia</option>
<option value="27">Singapore</option> <option value="27">Singapore</option>
<option value="7">United Kingdom</option> <option value="7">United Kingdom</option>
<option value="3" selected="selected">United States</option> <option value="3" >United States</option>
<option value="458">Afghanistan</option> <option value="458">Afghanistan</option>
<option value="459">Albania</option> <option value="459">Albania</option>
<option value="460">Algeria</option> <option value="460">Algeria</option>
@ -671,20 +684,279 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="664">Zaire</option> <option value="664">Zaire</option>
<option value="665">Zambia</option> <option value="665">Zambia</option>
<option value="666">Zimbabwe</option> <option value="666">Zimbabwe</option>
<option value="678">Serbia</option>
</select> </select>
<div class="inputTerm" id='phoneNumberDiv'>
<select class="code" name="country_code" id="country_code">
<option value="" disabled selected>Please select your country code</option>
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option style="font-weight: 600;" value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option style="font-weight: 600;" value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="France +33">France&nbsp; &nbsp;+33</option>
<option style="font-weight: 600;" value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option style="font-weight: 600; " value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option style="font-weight: 600; " value="Mexico +52">Mexico&nbsp; &nbsp;+52</option>
<option style="font-weight: 600; " value="Netherlands +31">Netherlands&nbsp; &nbsp;+31</option>
<option style="font-weight: 600; " value="Singapore +65">Singapore&nbsp; &nbsp;+65</option>
<option value="Afghanistan +93">Afghanistan &nbsp; &nbsp;+93</option>
<option value="Albania +355">Albania &nbsp; &nbsp;+355</option>
<option value="Algeria +213">Algeria&nbsp; &nbsp;+213</option>
<option value="American Samoa +1">American Samoa&nbsp; &nbsp;+1684</option>
<option value="Andorra +376">Andorra&nbsp; &nbsp;+376</option>
<option value="Angola +244">Angola&nbsp; &nbsp;+244</option>
<option value="Anguilla +1">Anguilla&nbsp; &nbsp;+1264</option>
<option value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option value="Antigua and Barbuda +1">Antigua and Barbuda&nbsp; &nbsp;+1268</option>
<option value="Argentina +54">Argentina&nbsp; &nbsp;+54</option>
<option value="Armenia +374">Armenia &nbsp; &nbsp;+374</option>
<option value="Aruba +297">Aruba&nbsp; &nbsp;+297</option>
<option value="Ascension Island +247">Ascension Island&nbsp; &nbsp;+247</option>
<option value="Austria +43">Austria&nbsp; &nbsp;+43</option>
<option value="Azerbaijan +994">Azerbaijan&nbsp; &nbsp;+994</option>
<option value="Bahamas +1">Bahamas&nbsp; &nbsp;+1242</option>
<option value="Bahrain +973">Bahrain&nbsp; &nbsp;+973</option>
<option value="Bangladesh +880">Bangladesh&nbsp; &nbsp;+880</option>
<option value="Barbados +1">Barbados&nbsp; &nbsp;+1246</option>
<option value="Belarus +375">Belarus&nbsp; &nbsp;+375</option>
<option value="Belgium +32">Belgium&nbsp; &nbsp;+32</option>
<option value="Belize +501">Belize&nbsp; &nbsp;+501</option>
<option value="Benin +229">Benin&nbsp; &nbsp;+229</option>
<option value="Bermuda +1">Bermuda&nbsp; &nbsp;+1441</option>
<option value="Bhutan +975">Bhutan&nbsp; &nbsp;+975</option>
<option value="Bolivia +591">Bolivia&nbsp; &nbsp;+591</option>
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina&nbsp; &nbsp;+387</option>
<option value="Botswana +267">Botswana&nbsp; &nbsp;+267</option>
<option value="Brazil +55">Brazil&nbsp; &nbsp;+55</option>
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory&nbsp; &nbsp;+246
</option>
<option value="British Virgin Islands +1">British Virgin Islands&nbsp; &nbsp;+1284</option>
<option value="Brunei +673">Brunei&nbsp; &nbsp;+673</option>
<option value="Bulgaria +359">Bulgaria &nbsp; &nbsp;+359</option>
<option value="Burkina Faso +226">Burkina Faso&nbsp; &nbsp;+226</option>
<option value="Burundi +257">Burundi&nbsp; &nbsp;+257</option>
<option value="Cambodia +855">Cambodia&nbsp; &nbsp;+855</option>
<option value="Cameroon +237">Cameroon&nbsp; &nbsp;+237</option>
<option value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option value="Cape Verde +238">Cape Verde&nbsp; &nbsp;+238</option>
<option value="Caribbean Netherlands +599">Caribbean Netherlands&nbsp; &nbsp;+599</option>
<option value="Cayman Islands +1">Cayman Islands&nbsp; &nbsp;+1345</option>
<option value="Central African Republic +236">Central African Republic&nbsp; &nbsp;+236</option>
<option value="Chad +235">Chad&nbsp; &nbsp;+235</option>
<option value="Chile +56">Chile&nbsp; &nbsp;+56</option>
<option value="China +86">China&nbsp; &nbsp;+86</option>
<option value="Christmas Island +61">Christmas Island&nbsp; &nbsp;+6189164</option>
<option value="Cocos Islands +61">Cocos Islands&nbsp; &nbsp;+6189162</option>
<option value="Colombia +57">Colombia&nbsp; &nbsp;+57</option>
<option value="Comoros +269">Comoros&nbsp; &nbsp;+269</option>
<option value="Congo +243">Congo (DRC)&nbsp; &nbsp;+243</option>
<option value="Congo +242">Congo (Republic)&nbsp; &nbsp;+242</option>
<option value="Cook Islands +682">Cook Islands&nbsp; &nbsp;+682</option>
<option value="Costa Rica +506">Costa Rica&nbsp; &nbsp;+506</option>
<option value="Côte d'Ivoire +225">Côte d'Ivoire&nbsp; &nbsp;+225</option>
<option value="Croatia +385">Croatia&nbsp; &nbsp;+385</option>
<option value="Cuba +53">Cuba&nbsp; &nbsp;+53</option>
<option value="Curaçao +599">Curaçao&nbsp; &nbsp;+599</option>
<option value="Cyprus +357">Cyprus&nbsp; &nbsp;+357</option>
<option value="Czech Republic +420">Czech Republic&nbsp; &nbsp;+420</option>
<option value="Denmark +45">Denmark&nbsp; &nbsp;+45</option>
<option value="Djibouti +253">Djibouti&nbsp; &nbsp;+253</option>
<option value="Dominica +1">Dominica&nbsp; &nbsp;+1767</option>
<option value="Dominican Republic +1">Dominican Republic&nbsp; &nbsp;+1809</option>
<option value="Ecuador +593">Ecuador&nbsp; &nbsp;+593</option>
<option value="Egypt +20">Egypt&nbsp; &nbsp;+20</option>
<option value="El Salvador +503">El Salvador&nbsp; &nbsp;+503</option>
<option value="Equatorial Guinea +240">Equatorial Guinea&nbsp; &nbsp;+240</option>
<option value="Eritrea +291">Eritrea&nbsp; &nbsp;+291</option>
<option value="Estonia +372">Estonia&nbsp; &nbsp;+372</option>
<option value="Eswatini +268">Eswatini&nbsp; &nbsp;+268</option>
<option value="Ethiopia +251">Ethiopia&nbsp; &nbsp;+251</option>
<option value="Falkland Islands +500">Falkland Islands&nbsp; &nbsp;+500</option>
<option value="Faroe Islands +298">Faroe Islands&nbsp; &nbsp;+298</option>
<option value="Fiji +679">Fiji&nbsp; &nbsp;+679</option>
<option value="Finland +358">Finland&nbsp; &nbsp;+358</option>
<option value="France +33">France&nbsp; &nbsp;+33</option>
<option value="French Guiana +594">French Guiana&nbsp; &nbsp;+594</option>
<option value="French Polynesia +689">French Polynesia&nbsp; &nbsp;+689</option>
<option value="Gabon +241">Gabon&nbsp; &nbsp;+241</option>
<option value="Gambia +220">Gambia&nbsp; &nbsp;+220</option>
<option value="Georgia +995">Georgia&nbsp; &nbsp;+995</option>
<option value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option value="Ghana +233">Ghana&nbsp; &nbsp;+233</option>
<option value="Gibraltar +350">Gibraltar&nbsp; &nbsp;+350</option>
<option value="Greece +30">Greece&nbsp; &nbsp;+30</option>
<option value="Greenland +299">Greenland&nbsp; &nbsp;+299</option>
<option value="Grenada +1">Grenada&nbsp; &nbsp;+1473</option>
<option value="Guadeloupe +590">Guadeloupe&nbsp; &nbsp;+590</option>
<option value="Guam +1">Guam&nbsp; &nbsp;+1671</option>
<option value="Guatemala +502">Guatemala&nbsp; &nbsp;+502</option>
<option value="Guernsey +44">Guernsey&nbsp; &nbsp;+441481</option>
<option value="Guinea +224">Guinea&nbsp; &nbsp;+224</option>
<option value="Guinea-Bissau +245">Guinea-Bissau&nbsp; &nbsp;+245</option>
<option value="Guyana +592">Guyana&nbsp; &nbsp;+592</option>
<option value="Haiti +509">Haiti&nbsp; &nbsp;+509</option>
<option value="Honduras +504">Honduras&nbsp; &nbsp;+504</option>
<option value="Hong Kong +852">Hong Kong&nbsp; &nbsp;+852</option>
<option value="Hungary +36">Hungary&nbsp; &nbsp;+36</option>
<option value="Iceland +354">Iceland&nbsp; &nbsp;+354</option>
<option value="India +91">India&nbsp; &nbsp;+91</option>
<option value="Indonesia +62">Indonesia&nbsp; &nbsp;+62</option>
<option value="Iran +98">Iran&nbsp; &nbsp;+98</option>
<option value="Iraq +964">Iraq&nbsp; &nbsp;+964</option>
<option value="Ireland +353">Ireland&nbsp; &nbsp;+353</option>
<option value="Isle of Man +44">Isle of Man&nbsp; &nbsp;+44</option>
<option value="Israel +972">Israel&nbsp; &nbsp;+972</option>
<option value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option value="Jamaica +1">Jamaica&nbsp; &nbsp;+1876</option>
<option value="Japan +81">Japan&nbsp; &nbsp;+81</option>
<option value="Jersey +44">Jersey&nbsp; &nbsp;+44</option>
<option value="Jordan +962">Jordan&nbsp; &nbsp;+962</option>
<option value="Kazakhstan +7">Kazakhstan &nbsp; &nbsp;+7</option>
<option value="Kenya +254">Kenya&nbsp; &nbsp;+254</option>
<option value="Kiribati +686">Kiribati&nbsp; &nbsp;+686</option>
<option value="Kosovo +383">Kosovo&nbsp; &nbsp;+383</option>
<option value="Kuwait +965">Kuwait&nbsp; &nbsp;+965</option>
<option value="Kyrgyzstan +996">Kyrgyzstan &nbsp; &nbsp;+996</option>
<option value="Laos +856">Laos&nbsp; &nbsp;+856</option>
<option value="Latvia +371">Latvia &nbsp; &nbsp;+371</option>
<option value="Lebanon +961">Lebanon&nbsp; &nbsp;+961</option>
<option value="Lesotho +266">Lesotho&nbsp; &nbsp;+266</option>
<option value="Liberia +231">Liberia&nbsp; &nbsp;+231</option>
<option value="Libya +218">Libya&nbsp; &nbsp;+218</option>
<option value="Liechtenstein +423">Liechtenstein&nbsp; &nbsp;+423</option>
<option value="Lithuania +370">Lithuania&nbsp; &nbsp;+370</option>
<option value="Luxembourg +352">Luxembourg&nbsp; &nbsp;+352</option>
<option value="Macau +853">Macau&nbsp; &nbsp;+853</option>
<option value="Macedonia +389">Macedonia&nbsp; &nbsp;+389</option>
<option value="Madagascar +261">Madagascar&nbsp; &nbsp;+261</option>
<option value="Malawi +265">Malawi&nbsp; &nbsp;+265</option>
<option value="Malaysia +60">Malaysia&nbsp; &nbsp;+60</option>
<option value="Maldives +960">Maldives&nbsp; &nbsp;+960</option>
<option value="Mali +223">Mali&nbsp; &nbsp;+223</option>
<option value="Malta +356">Malta&nbsp; &nbsp;+356</option>
<option value="Marshall +692">Marshall Islands&nbsp; &nbsp;+692</option>
<option value="Martinique +596">Martinique&nbsp; &nbsp;+596</option>
<option value="Mauritania +222">Mauritania&nbsp; &nbsp;+222</option>
<option value="Mauritius +230">Mauritius&nbsp; &nbsp;+230</option>
<option value="Mayotte +262">Mayotte&nbsp; &nbsp;+262</option>
<option value="Micronesia +691">Micronesia&nbsp; &nbsp;+691</option>
<option value="Moldova +373">Moldova&nbsp; &nbsp;+373</option>
<option value="Monaco +377">Monaco&nbsp; &nbsp;+377</option>
<option value="Mongolia +976">Mongolia&nbsp; &nbsp;+976</option>
<option value="Montenegro +382">Montenegro&nbsp; &nbsp;+382</option>
<option value="Montserrat +1">Montserrat&nbsp; &nbsp;+1664</option>
<option value="Morocco +212">Morocco&nbsp; &nbsp;+212</option>
<option value="Mozambique +258">Mozambique&nbsp; &nbsp;+258</option>
<option value="Myanmar +95">Myanmar &nbsp; &nbsp;+95</option>
<option value="Namibia +264">Namibia&nbsp; &nbsp;+264</option>
<option value="Nauru +674">Nauru&nbsp; &nbsp;+674</option>
<option value="Nepal +977">Nepal&nbsp; &nbsp;+977</option>
<option value="New Caledonia +687">New Caledonia&nbsp; &nbsp;+687</option>
<option value="New Zealand +64">New Zealand&nbsp; &nbsp;+64</option>
<option value="Nicaragua +505">Nicaragua&nbsp; &nbsp;+505</option>
<option value="Niger +227">Niger&nbsp; &nbsp;+227</option>
<option value="Nigeria +234">Nigeria&nbsp; &nbsp;+234</option>
<option value="Niue +683">Niue&nbsp; &nbsp;+683</option>
<option value="Norfolk Island +672">Norfolk Island&nbsp; &nbsp;+6723</option>
<option value="North Korea +850">North Korea&nbsp; &nbsp;+850</option>
<option value="Northern Mariana Islands +1">Northern Mariana Islands&nbsp; &nbsp;+1670</option>
<option value="Norway +47">Norway&nbsp; &nbsp;+47</option>
<option value="Oman +968">Oman&nbsp; &nbsp;+968</option>
<option value="Pakistan +92">Pakistan&nbsp; &nbsp;+92</option>
<option value="Palau +680">Palau&nbsp; &nbsp;+680</option>
<option value="Palestine +970">Palestine &nbsp; &nbsp;+970</option>
<option value="Panama +507">Panama &nbsp; &nbsp;+507</option>
<option value="Papua New Guinea 675">Papua New Guinea&nbsp; &nbsp;+675</option>
<option value="Paraguay +595">Paraguay&nbsp; &nbsp;+595</option>
<option value="Peru +51">Peru &nbsp; &nbsp;+51</option>
<option value="Philippines +63">Philippines&nbsp; &nbsp;+63</option>
<option value="Poland +48">Poland&nbsp; &nbsp;+48</option>
<option value="Portugal +351">Portugal&nbsp; &nbsp;+351</option>
<option value="Puerto Rico +1">Puerto Rico&nbsp; &nbsp;+1787</option>
<option value="Qatar +974">Qatar&nbsp; &nbsp;+974</option>
<option value="Réunion +262">Réunion&nbsp; &nbsp;+262</option>
<option value="Romania +40">Romania&nbsp; &nbsp;+40</option>
<option value="Russia +7">Russia&nbsp; &nbsp;+7</option>
<option value="Rwanda +250">Rwanda&nbsp; &nbsp;+250</option>
<option value="Saint Barthélemy +590">Saint Barthélemy&nbsp; &nbsp;+590</option>
<option value="Saint Helena +290">Saint Helena&nbsp; &nbsp;+290</option>
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis&nbsp; &nbsp;+1869</option>
<option value="Saint Lucia +1">Saint Lucia&nbsp; &nbsp;+1758</option>
<option value="Saint Martin +590">Saint Martin&nbsp; &nbsp;+590</option>
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon&nbsp; &nbsp;+508</option>
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines&nbsp; &nbsp;+1784
</option>
<option value="Samoa +685">Samoa&nbsp; &nbsp;+685</option>
<option value="San Marino +378">San Marino&nbsp; &nbsp;+378</option>
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe&nbsp; &nbsp;+239</option>
<option value="Saudi Arabia +966">Saudi Arabia &nbsp; &nbsp;+966</option>
<option value="Senegal +221">Senegal &nbsp; &nbsp;+221</option>
<option value="Serbia +381">Serbia&nbsp; &nbsp;+381</option>
<option value="Seychelles +248">Seychelles&nbsp; &nbsp;+248</option>
<option value="Sierra Leone +232">Sierra Leone&nbsp; &nbsp;+232</option>
<option value="Sint Maarten +1">Sint Maarten&nbsp; &nbsp;+1721</option>
<option value="Slovakia +421">Slovakia&nbsp; &nbsp;+421</option>
<option value="Slovenia +386">Slovenia&nbsp; &nbsp;+386</option>
<option value="Solomon Islands +677">Solomon Islands&nbsp; &nbsp;+677</option>
<option value="Somalia +252">Somalia&nbsp; &nbsp;+252</option>
<option value="South Africa +27">South Africa&nbsp; &nbsp;+27</option>
<option value="South Korea +82">South Korea&nbsp; &nbsp;+82</option>
<option value="South Sudan +211">South Sudan&nbsp; &nbsp;+211</option>
<option value="Spain +34">Spain&nbsp; &nbsp;+34</option>
<option value="Sri Lanka +94">Sri Lanka &nbsp; &nbsp;+94</option>
<option value="Sudan +249">Sudan&nbsp; &nbsp;+249</option>
<option value="Suriname">Suriname&nbsp; &nbsp;+597</option>
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen&nbsp; &nbsp;+47</option>
<option value="Sweden +46">Sweden&nbsp; &nbsp;+46</option>
<option value="Switzerland +41">Switzerland&nbsp; &nbsp;+41</option>
<option value="Syria +963">Syria &nbsp; &nbsp;+963</option>
<option value="Taiwan +886">Taiwan&nbsp; &nbsp;+886</option>
<option value="Tajikistan +992">Tajikistan&nbsp; &nbsp;+992</option>
<option value="Tanzania +255">Tanzania&nbsp; &nbsp;+255</option>
<option value="Thailand +66">Thailand&nbsp; &nbsp;+66</option>
<option value="Timor-Leste +670">Timor-Leste&nbsp; &nbsp;+670</option>
<option value="Togo +228">Togo&nbsp; &nbsp;+228</option>
<option value="Tokelau +690">Tokelau&nbsp; &nbsp;+690</option>
<option value="Tonga +676">Tonga&nbsp; &nbsp;+676</option>
<option value="Trinidad and Tobago +1">Trinidad and Tobago&nbsp; &nbsp;+1868</option>
<option value="Tunisia +216">Tunisia&nbsp; &nbsp;+216</option>
<option value="Turkey +90">Turkey&nbsp; &nbsp;+90</option>
<option value="Turkmenistan +993">Turkmenistan&nbsp; &nbsp;+993</option>
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands&nbsp; &nbsp;+1649</option>
<option value="Tuvalu +688">Tuvalu&nbsp; &nbsp;+688</option>
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands&nbsp; &nbsp;+1340</option>
<option value="Uganda +256">Uganda&nbsp; &nbsp;+256</option>
<option value="Ukraine +380">Ukraine&nbsp; &nbsp;+380</option>
<option value="United Arab Emirates +971">United Arab Emirates &nbsp; &nbsp;+971</option>
<option value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option value="United States +1">United States&nbsp; &nbsp;+1</option>
<option value="Uruguay +598">Uruguay&nbsp; &nbsp;+598</option>
<option value="Uzbekistan +998">Uzbekistan&nbsp; &nbsp;+998</option>
<option value="Vanuatu +678">Vanuatu&nbsp; &nbsp;+678</option>
<option value="Vatican City +39">Vatican City&nbsp; &nbsp;+379</option>
<option value="Venezuela +58">Venezuela&nbsp; &nbsp;+58</option>
<option value="Vietnam +84">Vietnam&nbsp; &nbsp;+84</option>
<option value="Wallis and Futuna +681">Wallis and Futuna&nbsp; &nbsp;+681</option>
<option value="Western Sahara +212">Western Sahara &nbsp; &nbsp;+21228</option>
<option value="Yemen +967">Yemen&nbsp; &nbsp;+967</option>
<option value="Zambia +260">Zambia&nbsp; &nbsp;+260</option>
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select>
<input type="text" name="mobile" required="" class="number" placeholder="Phone number">
</div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of birth</p> <p> Date of birth</p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="birthday[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<p> Date of expiration </p> <p> Date of expiration </p>
<input type="date" class="arrivalDate datepicker" <input type="date" class="arrivalDate datepicker"
name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off"> name="passport_expiration_date[]" value="" placeholder="mm/dd/yyyy" autocomplete="off" min="1753-01-01" max="9999-12-31">
</div> </div>
<div id="birth_error_msg" class="hidden">Please select your date of birth.</div> <div id="birth_error_msg" class="hidden">Please select your date of birth.</div>
@ -701,67 +973,22 @@ select.gender_pick {border: 1px solid #d1d1d1;
<option value="Self-emloyed person">Self-emloyed person</option> <option value="Self-emloyed person">Self-emloyed person</option>
<option value="Others">Others</option> <option value="Others">Others</option>
</select> </select>
</div>
<button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button> <button class="add_traveler_button" id="add_traveler_button" type="button">+ Add a traveler</button>
</div>
<div id="inquiryBox">
<h2>Your contact information (optional)</h2>
<p>Having a phone number, especially with WhatsApp/iMessage capability will help us contact you in
case of emergency.</p>
<p>Phone No.</p>
<div class="inputTerm">
<input type="text" name="mobile" required="" class="number">
<label>
including country code and area code
</label>
</div>
<div class="selectionBlock">
<p>Home address</p>
<div class="inputTerm">
<input type="text" name="address_street" required="">
<label>
Street
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_city" required="">
<label>
City
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_state" required="">
<label>
State
</label>
</div>
</div>
<div class="selectionBlock">
<div class="inputTerm">
<input type="text" name="address_country" required="">
<label>
Country
</label>
</div>
</div> </div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Flight Information (optional)</h2> <h2>Your Flight Information</h2>
<p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off. <p>Your flight information will be forwarded to your guide/driver for airport pick up and drop off.
Please ensure the details you provide are correct. You can skip this if your don't need airport Please ensure the details you provide are correct. You can skip this if your don't need airport
transfer service.</p> transfer service.</p>
<p>If you are not yet purchase your airline and insurance, please fill in the TBC in the link and provide those information to your consultant or keep update after you confirm them.</p>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_ArrivalFlightNo" required=""> <input type="text" name="MEI_ArrivalFlightNo">
<label> <label>
Arrival flight No. Arrival flight No.
</label> </label>
@ -769,7 +996,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="datetime-local" name="MEI_ArrivalTime" required=""> <input type="datetime-local" name="MEI_ArrivalTime" min="1753-01-01T00:00" max="9999-12-31T00:00">
<label> <label>
Arrival time Arrival time
</label> </label>
@ -777,7 +1004,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="text" name="MEI_DepartureFlightNo" required=""> <input type="text" name="MEI_DepartureFlightNo">
<label> <label>
Departure Flight No. Departure Flight No.
</label> </label>
@ -785,7 +1012,7 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
<input type="datetime-local" name="MEI_DepartureTime" required=""> <input type="datetime-local" name="MEI_DepartureTime" min="1753-01-01T00:00" max="9999-12-31T00:00">
<label> <label>
Departure time Departure time
</label> </label>
@ -793,14 +1020,10 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
<div id="inquiryBox">
<h2>Your Special Request (optional)</h2>
<p></p>
<textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Emergency Contact Information (optional)</h2> <h2>Emergency Contact Information</h2>
<div class="emergency_title">(in case an unlikely event happens when you are travelling)</div> <div class="emergency_title">(in case an unlikely event happens when you are travelling)</div>
<div class="selectionBlock"> <div class="selectionBlock">
<div class="inputTerm"> <div class="inputTerm">
@ -837,17 +1060,17 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<div id="inquiryBox"> <div id="inquiryBox">
<h2>Your Insurance Information (Optional)</h2> <h2>Your Insurance Information and Special Request (optional)</h2>
<textarea id="insurance_information" name="insurance_information" style="resize:none;"></textarea>
<textarea id="special_request" name="special_request" style="resize:none;"></textarea>
</div> </div>
<div class="inquiryBtn"> <div class="inquiryBtn">
<input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>"> <input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>">
<input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>"> <input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>">
<input type="hidden" name="customer_username" value="<?php echo $username; ?>"> <input type="hidden" name="customer_username" value="<?php echo $username; ?>">
<input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>"> <input type="hidden" name="customer_usermail" value="<?php echo $usermail; ?>">
<input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>"> <input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>">
<input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>"> <input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>">
<input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>"> <input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>">
@ -876,8 +1099,8 @@ select.gender_pick {border: 1px solid #d1d1d1;
</div> </div>
</div> </div>
</div> </div>
<!-- reviewModal end--> <!-- reviewModal end-->
<script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js,/js/customer_center_data/jquery-ui-timepicker-addon.js&v=2019092401"></script> <script src="https://data.chinahighlights.com/js/min.php?f=/js/customer_center_data/jquery.min.js,/js/customer_center_data/bootstrap.min.js,/js/customer_center_data/jquery-ui.min.js&v=202405161016"></script>
<script> <script>
function submit_info_form () { function submit_info_form () {
var $btn = $("#btn-add-userinfo").button('loading'); var $btn = $("#btn-add-userinfo").button('loading');
@ -940,18 +1163,30 @@ select.gender_pick {border: 1px solid #d1d1d1;
} }
}); });
} }
$(function() { $(function() {
var $travelerTemplate = $(".traveler_info:first").clone(); var $travelerTemplate = $(".traveler_info:first").clone();
//添加客户 //添加客户
$("#add_traveler_button").click(function() { $("#add_traveler_button").click(function () {addTraveler()});
var $addTraveler = $travelerTemplate.clone();
function addTraveler() {
var travelerCount = $(".traveler_info").length + 1; var travelerCount = $(".traveler_info").length + 1;
var travelerId = 'traveler' + travelerCount;
var $addTraveler = $travelerTemplate.clone();
$addTraveler.attr('id', travelerId);
$addTraveler.find('#phoneNumberDiv').remove();
$addTraveler.find('[data-header]').text('Traveler ' + travelerCount); $addTraveler.find('[data-header]').text('Traveler ' + travelerCount);
$('#add_traveler_button').before($addTraveler);
}); $addTravelerButton = $addTraveler.find('#add_traveler_button');
$addTravelerButton.attr('id', 'add_traveler_button' + travelerCount);
$addTravelerButton.click(function(){addTraveler()});
$deleteTravelerButton = $('<button class="add_traveler_button" type="button">- Delete Traveler ' + travelerCount + '</button>');
$deleteTravelerButton.click(function(){$('#'+travelerId).remove();});
$addTraveler.append($deleteTravelerButton);
$(".traveler_info:last").after($addTraveler);
}
}); });
</script> </script>
</body> </body>
</html>

@ -29,12 +29,12 @@
<h4 class="text-red" style="box-sizing:border-box;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:500;line-height:1.1;color:#AA2E2D;margin-top:10px;margin-bottom:15px;font-size:24px;padding:12px 0 12px 0;border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;white-space:normal;background-color:#FFFFFF;"> <h4 class="text-red" style="box-sizing:border-box;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:500;line-height:1.1;color:#AA2E2D;margin-top:10px;margin-bottom:15px;font-size:24px;padding:12px 0 12px 0;border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;white-space:normal;background-color:#FFFFFF;">
Flight Information Flight Information
</h4> </h4>
<p style="margin:0;">Arrival China Flight No.:<?php if (isset($postdata['MEI_ArrivalFlightNo'])) echo $postdata['MEI_ArrivalFlightNo']; ?></p> <p style="margin:0;">Arrival Flight No.:<?php if (isset($postdata['MEI_ArrivalFlightNo'])) echo $postdata['MEI_ArrivalFlightNo']; ?></p>
<p style="margin:0;"> <p style="margin:0;">
Arrival time:<?php if (isset($postdata['MEI_ArrivalTime'])) echo $postdata['MEI_ArrivalTime']; ?> Arrival time:<?php if (isset($postdata['MEI_ArrivalTime'])) echo $postdata['MEI_ArrivalTime']; ?>
</p> </p>
<p style="margin:0;"> <p style="margin:0;">
Departure China Flight no.:<?php if (isset($postdata['MEI_DepartureFlightNo'])) echo $postdata['MEI_DepartureFlightNo']; ?> Departure Flight no.:<?php if (isset($postdata['MEI_DepartureFlightNo'])) echo $postdata['MEI_DepartureFlightNo']; ?>
</p> </p>
<p style="margin:0;"> <p style="margin:0;">
Departure time:<?php if (isset($postdata['MEI_DepartureTime'])) echo $postdata['MEI_DepartureTime']; ?> Departure time:<?php if (isset($postdata['MEI_DepartureTime'])) echo $postdata['MEI_DepartureTime']; ?>

@ -27,6 +27,20 @@ class Index extends CI_Controller
$this->load->view('bootstrap3/footer'); $this->load->view('bootstrap3/footer');
} }
public function search()
{
$keywords = $this->input->post('keywords');
$byWhat = $this->input->post('byWhat');
$data = array();
$data['groupList'] = $this->Information_model->group_list();
$data['tipsList'] = $this->infoTips_model->search($keywords, $byWhat);
$data['lastKeyword'] = $keywords;
$this->load->view('bootstrap3/header', $data);
$this->load->view('welcome');
$this->load->view('bootstrap3/footer');
}
//节点绑定信息推荐或者广告 //节点绑定信息推荐或者广告
public function bind($is_id) public function bind($is_id)
{ {

@ -56,6 +56,25 @@ class infoTips_model extends CI_Model
} }
} }
public function search($keywords, $byWhat) {
$whereCodition = '';
if ($byWhat == 'byTitle') {
$whereCodition .= " and it.it_title like '%" . $this->HT->escape_str($keywords) . "%'";
} else if ($byWhat == 'byLabel') {
$whereCodition .= " and it.it_code like '%" . $this->HT->escape_str($keywords) . "%'";
} else if ($byWhat == 'byContent') {
$whereCodition .= " and it.it_content like '%" . $this->HT->escape_str($keywords) . "%'";
}
$searchText =
"select it.it_id ,it.it_title,it.it_expires,it.it_code,it.it_content,it.it_sitecode,it.it_datetime
from infoTips it
where it.it_sitecode=?"
. $whereCodition
. " order by it_expires ASC";
$query = $this->HT->query($searchText, array($this->config->item('site_code')));
return $query->result();
}
public function add($table, $data) public function add($table, $data)
{ {

@ -1,35 +1,56 @@
<!--<h3>CH文中信息广告代码</h3>
<div class="righttour"><a href="/beijing/"><img alt="Beijing trip" class="img-responsive" height="500" src="https://images.chinahighlights.com/allpicture/2015/10/0737277da892436db2906dd5_cut_800x500_10.jpg" style="width: 100%;" width="800" /></a>
<div class="rightinfo" style="min-width: 260px;"> <h1>请修改图片尺寸/ 改完请删除此标题 </h1>
<div class="rightname" style="font-size: 25px;"><a href="/beijing/">Beijing Travel Guide</a></div>
<span class="rightdestination">All things you need to know</span> <span class="tourbutton"> <a href="/beijing/">view more </a></span></div>
</div>
-->
<h3>CH文中tour广告代码</h3>
<div class="info_reco_tours"><em>Recommended</em> Itinerary</div> <h3>文中tour广告代码</h3>
<div class="info_ad"><a href="/japan/tours/classic-japan" rel="nofollow"><img alt="11-Day Classic Japan Tour" class="img-responsive" height="720" src="https://data.asiahighlights.com/image/travel-guide/japan/shirakawa-go-village.jpg" width="1903" /> </a> <div class="info_ad"><a href="/japan/tours/classic-japan" rel="nofollow" id="infopage-"><img alt="11-Day Classic Japan Tour" class="img-responsive" src="https://data.asiahighlights.com/image/travel-guide/japan/shirakawa-go-village.jpg" /> </a>
<div class="info_ad_content"> <div class="info_ad_content">
<div class="info_ad_name"><a href="/japan/tours/classic-japan"><strong>11-Day Classic Japan Tour</strong> Tokyo - Takayama - Shirakawa - Kanazawa - Kyoto </a></div> <div class="info_ad_name"><a href="/japan/tours/classic-japan" id="infopage-"><strong>11-Day Classic Japan Tour</strong> Tokyo - Takayama - Shirakawa - Kanazawa - Kyoto </a></div>
<div class="info_ad_button"><a href="/japan/tours/classic-japan" rel="nofollow"><i aria-hidden="true" class="fa fa-angle-right"></i></a></div> <div class="info_ad_button"><a href="/japan/tours/classic-japan" rel="nofollow" id="infopage-"><i aria-hidden="true" class="fa fa-angle-right"></i></a></div>
</div> </div>
</div> </div>
<h3>CH 完整的右侧广告代码:</h3> <h3>CH 完整的右侧广告代码:</h3>
<div class="expatstour" style=" <div class="expatstour" style="margin: 30px 0; width:auto;">
margin: 30px 0; width:auto;
">
<div class="tour_img_title"><a href="/tour/zhangjiajietour/hun-3/" rel="nofollow"><img alt="most classic china tour" class="img-responsive" height="415" src="https://images.chinahighlights.com/allpicture/2015/03/e47d1ba34f204510962a6c89_cut_600x550_251.jpg" width="600" /><span class="citytourname">Classic Wonders</span></a></div> <div class="tour_img_title"><a href="/tour/zhangjiajietour/hun-3/" rel="nofollow"><img alt="most classic china tour" class="img-responsive" height="415" src="https://images.chinahighlights.com/allpicture/2015/03/e47d1ba34f204510962a6c89_cut_600x550_251.jpg" width="600" /><span class="citytourname">Classic Wonders</span></a></div>
<div class="tourdetailinfo"><span class="expatstourname"><a href="/tour/zhangjiajietour/hun-3/">11-Day Beijing Xi'an Guilin/Yangshuo Shanghai Tour</a></span> <div class="tourdetailinfo"><span class="expatstourname"><a href="/tour/zhangjiajietour/hun-3/">11-Day Beijing Xi'an Guilin/Yangshuo Shanghai Tour</a></span>
<div class="tourbutton"><a href="/tour/zhangjiajietour/hun-3/" rel="nofollow">View More</a></div> <div class="tourbutton"><a href="/tour/zhangjiajietour/hun-3/" rel="nofollow">View More</a></div>
</div> </div>
</div> </div>
<h3>AH GH 线路卡片 代码:</h3>
<div class="ah_index_tour">
<a href="/india/tours/diwali-festival" rel="nofollow"><img alt="8-Day Diwali Festival in India Golden Triangle Tour 2024" class="img-responsive" src="https://images.asiahighlights.com/allpicture/2020/01/1ce7cfa94db040dcaa147143_cut_2560x800_296.jpg" ><img alt="" class="img-responsive tour_list_map" src="https://data.asiahighlights.com/image/tour/india/map/ah-in-70-map.jpg"></a>
<div class="ah_index_tour_bg">
<h3><a href="/india/tours/diwali-festival">8-Day Diwali Festival in India Golden Triangle Tour 2024</a></h3>
<div class="tour_list_subtitle">Discover Colorful India during the Diwali Festival</div>
<div class="ah_index_tour_button">
<div class="tour_list_price"><strong>Private tour from:</strong> US$1,719</div>
<a href="/india/tours/diwali-festival" rel="nofollow">View More </a></div>
</div>
</div>
<h3>CH 线路卡片 代码:</h3>
<div class="expatstour">
<div class="tour_img_title"><a href="/tour/cht-ft-02/" rel="nofollow"><img alt="China family travel" class="img-responsive" src="https://images.chinahighlights.com/allpicture/2021/10/5405ded6c1a642e8a04f1b45_cut_600x550_251.jpg" ><span class="citytourname">Family Happiness</span></a></div>
<div class="tourdetailinfo"><span class="expatstourname"><a href="/tour/cht-ft-02/" rel="nofollow">11-Day Beijing - Xi'an - Guilin - Shanghai Family Tour</a></span>
<ul class="infolist">
<li>Top <strong>family itinerary</strong></li>
<li>Experience China's countryside life together</li>
</ul>
<div class="tourbutton"><a href="/tour/cht-ft-02/" rel="nofollow">View More</a></div>
</div>
</div>

@ -5,13 +5,46 @@
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<h4>广告管理 <small><a href="<?php echo site_url('thirdparty/recommend/tips/add'); ?>">添加广告</a></small></h4> <h4>广告管理 <small><a href="<?php echo site_url('thirdparty/recommend/tips/add'); ?>">添加广告</a></small></h4>
<form id="searchForm" method="post" action="<?php echo site_url('thirdparty/recommend/index/search'); ?>" class="navbar-form navbar-left">
<div class="input-group">
<input type="text" class="form-control input-sm" name="keywords" id="keywords" value="<?php if (!empty($lastKeyword)) {echo $lastKeyword;} ?>" style="min-width:450px;">
<input type="hidden" name="byWhat" id="byWhatInput" >
</div>
<span class="input-group-btn">
<button class="btn btn-default btn-sm" id="searchByTitleBtn" type="button">搜索标题</button>
<button class="btn btn-default btn-sm" id="searchByLabelBtn" type="button">搜索标签</button>
<button class="btn btn-default btn-sm" id="searchByContentBtn" type="button">搜索内容</button>
</span>
</form>
<script>
var searchForm = document.getElementById('searchForm');
var searchByTitleBtn = document.getElementById('searchByTitleBtn');
var searchByLabelBtn = document.getElementById('searchByLabelBtn');
var searchByContentBtn = document.getElementById('searchByContentBtn');
var byWhatInput = document.getElementById('byWhatInput');
function submitSearch(byWhat) {
byWhatInput.value = byWhat;
searchForm.submit();
}
searchByTitleBtn.addEventListener('click', function(event) {
submitSearch('byTitle');
});
searchByLabelBtn.addEventListener('click', function(event) {
submitSearch('byLabel');
});
searchByContentBtn.addEventListener('click', function(event) {
submitSearch('byContent');
});
</script>
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<tr> <tr>
<th class="col-md-2">#</th> <th class="col-md-2">#</th>
<th class="col-md-9">标题</th> <th class="col-md-9">标题</th>
<th class="col-md-9">代码</th> <th class="col-md-9">标签</th>
<th class="col-md-4">过期时间</th> <th class="col-md-4">过期时间</th>
</tr> </tr>
</thead> </thead>

@ -0,0 +1,292 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class searchnew extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->model("BIZ_train_model");//加载模型
}
//查询聚合余票接口,对返回的数据进行处理
public function index($train_date=null,$fromStation=null,$toStation=null){
//定义一些变量
$cache = 'no';
$flag = true;
$juheTrainInfo = '';
set_time_limit(0);
//判断数据是否合法
if(!$train_date || !$fromStation || !$toStation){
exit('传参不能为空!');
}else{
if(strlen($fromStation) != 3){
exit('fromStation:参数错误!');
}
if(strlen($toStation) != 3){
exit('toStation:参数错误!');
}
$this->train_date = $train_date;
$now_time = time();
$differ_time = (strtotime($train_date) - $now_time) / 86400;
if($differ_time <= 29){
//调用聚合搜索模块
$juheTrainInfo = $this->juheSearch($train_date,$fromStation,$toStation);
if(empty($juheTrainInfo)){
$flag = 'error';
}
}else{
$flag = 'cache';
}
//调用数据处理模块。
$returnJson = $this->dataOperate($juheTrainInfo,$flag,$fromStation,$toStation);
//调用拼接处理模块
$trainjson = $this->createTrainJson($returnJson);
print_r($trainjson);
die();
}
}
//搜索模块
function juheSearch($train_date,$fromStation,$toStation){
$url = 'http://139.129.246.118:12309/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation;
$this->url = $url;
$juheTrainInfo = $this->get_http($url);
if($this->validateJuhe($juheTrainInfo)){
return $juheTrainInfo;
}else{
return null;
}
}
//缓存处理模块(包含缓存处理)
function dataOperate($trainInfo,$flag,$fromStation,$toStation){
if($flag == 'error'){
$research = $this->juheSearch($this->train_date,$fromStation,$toStation);
if($this->validateJuhe($research)){
$trainInfo = $research;
}else{
$flag = 'cache';
}
}
if($flag == 'cache'){
$cacheTrainInfo = $this->BIZ_train_model->get_train_info($fromStation,$toStation);
if(empty($cacheTrainInfo)){
return null;
}else{
$cache_time = $cacheTrainInfo->tpc_datetime;
$now_time = time();
$differ_time = ($now_time - strtotime($cache_time)) / 86400;
if($differ_time >= 7){
$this->delete_traincache($fromStation,$toStation);
$research = $this->juheSearch(strtotime('+7day'),$fromStation,$toStation);
if($this->validateJuhe($research)){
$trainInfo = $research;
}else{
return null;
}
}
}
}
$this->BIZ_train_model->addOrUpdate($fromStation,$toStation,$trainInfo);
return $trainInfo;
}
//字符串拼接模块
function createTrainJson($returnJson){
if(empty($returnJson)){
}else{
$return_data = new stdClass();
$return_data->data = new stdClass();
$return_data->httpstatus = 200;
//$return_data->reason = $reason;
//$return_data->cache = $cache;
$return_data->data->result = array();
$return_data->data->map = new stdClass();
$obj = array();
$i = 0;
$pricestr = '';
//print_r(json_decode($returnJson));
//die();
if(!empty(json_decode($returnJson)->result->list)){
foreach (json_decode($returnJson)->result->list as $value){
$obj[$value->from_station_code] = $value->from_station_name;
$obj[$value->to_station_code] = $value->to_station_name;
$seat_type = '';
if(isset($value->gjrw_price)){
if($value->gjrw_price > 0){
$gjrwPrice = $value->gjrw_price * 10;
$seat_type .= '"6":"'.$gjrwPrice.'","A6":"¥'.$value->gjrw_price.'",';
}
}
if(isset($value->qtxb_price)){
if($value->qtxb_price > 0){
$seat_type .= '"H":"¥'.$value->qtxb_price.'",';
}
}
if(isset($value->rw_price)){
if($value->rw_price > 0){
$rwPrice = $value->rw_price * 10;
$seat_type .= '"4":"'.$rwPrice.'","A4":"¥'.$value->rw_price.'",';
}
}
if(isset($value->rz_price)){
if($value->rz_price > 0){
$rzPrice = $value->rz_price * 10;
$seat_type .= '"2":"'.$rzPrice.'","A2":"¥'.$value->rz_price.'",';
}
}
if(isset($value->tdz_price)){
if($value->tdz_price > 0){
$seat_type .= '"P":"¥'.$value->tdz_price.'",';
}
}
if(isset($value->wz_price)){
if($value->wz_price > 0){
$wzPrice = $value->wz_price * 10;
$seat_type .= '"WZ":"¥'.$value->wz_price.'",';
}
}
if(isset($value->yw_price)){
if($value->yw_price > 0){
$ywPrice = $value->yw_price * 10;
$seat_type .= '"3":"'.$ywPrice.'","A3":"¥'.$value->yw_price.'",';
}
}
if(isset($value->yz_price)){
if($value->yz_price > 0){
$yzPrice = $value->yz_price * 10;
$seat_type .= '"1":"'.$yzPrice.'","A1":"¥'.$value->yz_price.'",';
}
}
if(isset($value->edz_price)){
if($value->edz_price > 0){
$seat_type .= '"O":"¥'.$value->edz_price.'",';
}
}
if(isset($value->ydz_price)){
if($value->ydz_price > 0){
$seat_type .= '"M":"¥'.$value->ydz_price.'",';
}
}
if(isset($value->swz_price)){
if($value->swz_price > 0){
$swzPrice = $value->swz_price * 10;
$seat_type .= '"9":"'.$swzPrice.'","A9":"¥'.$value->swz_price.'",';
}
}
if(isset($value->dw_price)){
if($value->dw_price > 0){
$seat_type .= '"F":"¥'.$value->dw_price.'",';
}
}
$pricestr = $seat_type.'"train_no":'.'"'.$value->train_no.'"';
//余票字符串
$return_data->data->result[$i] = '|预定|'.$value->train_no.'|'.$value->train_code.'|'.$value->from_station_name.'|'.$value->to_station_name.'|'.$value->from_station_code.'|'.$value->to_station_code.'|'.$value->start_time.'|'.$value->arrive_time.'|'.$value->run_time.'|'.$value->can_buy_now.'||'.$value->train_start_date.'||||||||'.$this->ticket_exchange($value->gjrw_num).'|'.$this->ticket_exchange($value->qtxb_num).'|'.$this->ticket_exchange($value->rw_num).'|'.$this->ticket_exchange($value->rz_num).'|'.$this->ticket_exchange($value->tdz_num).'|'.$this->ticket_exchange($value->wz_num).'||'.$this->ticket_exchange($value->yw_num).'|'.$this->ticket_exchange($value->yz_num).'|'.$this->ticket_exchange($value->edz_num).'|'.$this->ticket_exchange($value->ydz_num).'|'.$this->ticket_exchange($value->swz_num).'|'.$this->ticket_exchange($value->dw_num).'||';
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$pricestr.'},"messages":[],"validateMessages":{}}';
$return_data->data->price[$i] = $data;
$i++;
}
}
$return_data->data->map = (object)$obj;
print_r($return_data);
}
}
//获取价格(废弃)
/*
fromStationCode出发站三字码
toStationCode:终点站三字码
trainCode:车次号
*/
public function get_price($fromStationCode=null,$toStationCode=null,$trainCode=null){
if(!$fromStationCode || !$toStationCode || !$trainCode){
exit('传参错误!');
}else{
$return_data = $this->BIZ_train_model->get_price($fromStationCode,$toStationCode,$trainCode);
if(!empty($return_data)){
print_r(json_decode($return_data->TPL_Price));
}else{
print_r('没有数据返回');
}
}
}
//验证聚合返回的信息是否正确
function validateJuhe($trainInfo){
if(!empty($trainInfo) && !empty(json_decode($trainInfo)->result)){
return true;
}else{
return false;
}
}
//余票转换
function ticket_exchange($num){
if(isset($this->cache)){
$time = strtotime($this->train_date) - time();
$day = $time / 86400;
if($day > 15){
return '有';
}else{
return $num;
}
}else{
if(is_numeric($num)){
if($num == 0){
return '无';
}elseif($num >= 99){
return '有';
}else{
return $num;
}
}else{
if($num == '--'){
return '';
}
}
}
}
//发送请求
function get_http($url, $data = '', $method = 'GET') {
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
if ($method == 'POST' && !empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
}
curl_setopt($curl, CURLOPT_TIMEOUT, 45); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
$errno = curl_errno($curl);
if ($errno !== 0) {
return false;
$error_message = $errno . ' ' . curl_error($curl); //记录错误日志
log_message('error', "third_party/train_app/index/get_http curl {$error_message}");
}
curl_close($curl); //关闭CURL会话
return $tmpInfo; //返回数据
}
}
?>

@ -60,6 +60,15 @@ define("JUHE_TRAIN_EXPORT_API","http://op.juhe.cn/trainTickets/exportAccountChan
//http://op.juhe.cn/trainTickets/exportAccountChange?key=79f03107b921ef31310bd40a1415c1cb&since=2016-10-01 00:00&before=2016-10-30 00:00 //http://op.juhe.cn/trainTickets/exportAccountChange?key=79f03107b921ef31310bd40a1415c1cb&since=2016-10-01 00:00&before=2016-10-30 00:00
// //澜海接口(测试)
// define("LANHAI_appId","3649601564");
// define("LANHAI_KEY","999c1DtJJ4pEbcxeEqJBKw==");
// define("LANHAI_URL","http://ctriptest.lhticket.com/");
//澜海接口(正式)
define("LANHAI_appId","9082253783");
define("LANHAI_KEY","YZ6yrAbv0Qn8CsZwHtZExA==");
define("LANHAI_URL","http://ctrip.lhticket.com/");
//订单状态说明 //订单状态说明
$config["train_order_status_msg"]=array( $config["train_order_status_msg"]=array(

@ -39,7 +39,7 @@ class addorders extends CI_Controller{
} }
} }
//自动出票 //自动出票,2024-1-30改用新方法
public function auto_pay_ticket(){ public function auto_pay_ticket(){
//log_message('error','auto ticket'); //log_message('error','auto ticket');
date_default_timezone_set('Asia/Shanghai'); date_default_timezone_set('Asia/Shanghai');
@ -165,6 +165,146 @@ class addorders extends CI_Controller{
} }
print_r('<table border="1">'.$string.'</table>'); print_r('<table border="1">'.$string.'</table>');
} }
//自动出票2.0 2024-1-30 zp
public function auto_pay_ticket_2(){
date_default_timezone_set('Asia/Shanghai');
set_time_limit(180);
//筛选出能自动出票的订单
$auto_pool = $this->BIZ_train_model->auto_check_ticket_2();
// $DepartureDate = strtotime(date('Y-m-d',strtotime("2024-5-9"))); //只取日期部分
// $now = strtotime(date('Y-m-d'));
// $depart_diff = ($DepartureDate - $now) / 86400;
// $saletime = strtotime("17:00");
// $sale_diff = (time() - $saletime) / 3600;
//创建一个不允许自动出票的国际火车票数组
$nation_train = array('K19', 'K23', 'Z8701', 'Z8702', 'Z97', 'Z98', 'Z99', 'Z100', 'K9795','D87');
//创建黑名单
$black_list = $this->config->item('black_list');
$string = '';
foreach($auto_pool as $item){
$this->isauto = 1;
$bpe_sn = '';
$back_message = '';
$cold_sn = $item->COLD_SN;
$coli_id = $item->coli_id;
$auto_flag = 1;
$people_arr = $this->BIZ_train_model->biz_people($cold_sn);
$train_info = $this->BIZ_train_model->biz_order_detail($cold_sn);
//乘客人数大于10人不出票
if(count($people_arr) > 10){
$auto_flag = 0;
$back_message .= '-乘客人数大于10不自动出票';
}
//护照号如果在黑名单的就不自动出票
foreach($people_arr as $people_info){
if(in_array($people_info->BPE_Passport,$black_list)){
$auto_flag = 0;
$back_message .= '-此用户为黑名单用户,不自动出票';
}
if(strlen($people_info->BPE_Passport) >= 18){
$auto_flag = 0;
$back_message .= '-护照位数大于18不自动出票';
}
$bpe_sn .= $people_info->BPE_SN.',';
}
$bpe_sn = substr($bpe_sn,0,strlen($bpe_sn)-1);
//不是已付款状态的票价高于5000不出票以防意外
if($item->COLI_State != '8'){
if($train_info->adultcost > 5000){
$auto_flag = 0;
$back_message .= '-没支付单价大于5000不自动出票';
}
}
//如果为国际火车票就不出票
if(in_array($train_info->FlightsNo, $nation_train) || strlen($train_info->DepartAirport)>3 || strlen($train_info->ArrivalAirport)>3){
$auto_flag = 0;
$back_message .= '-国际火车票不自动出票';
}
//无座的订单不做出票
if($train_info->Aircraft == 'WZ'){
$auto_flag = 0;
$back_message .= '-无座不自动出票';
}
$DepartureDate = strtotime(date('Y-m-d',strtotime($train_info->DepartureDate))); //只取日期部分
$now = strtotime(date('Y-m-d'));
$depart_diff = ($DepartureDate - $now) / 86400;
//如果刚好是第15天的订单(12306的15天预售是算当天的所以时间差是14天)
if($depart_diff==14){
//$this->isauto = 1;
$time_obj = $this->BIZ_train_model->get_saletime($train_info->DepartAirport_cn);
//print_r($time_obj);
if(!empty($time_obj)){
$saletime = strtotime($time_obj->TST_saletime);
}else{
$saletime = strtotime("12:00"); //如果没有设置预售时间默认8点
}
//echo $saletime;
$sale_diff = (time() - $saletime) / 3600;
if($sale_diff > 12){
$auto_flag = 0;
$back_message .= '-超过抢票时间';
}else if($sale_diff <0){
$auto_flag = 0;
$back_message .= '-未到抢票时间';
}
//$time = strtotime(time());
// $autolasttime = $item->ts_autolasttime;
// if(($timestamp = strtotime($autolasttime)) !== false) {
// $time_diff = ($time - strtotime($autolasttime)) / 3600;
// if ($time_diff < 1){
// $auto_flag = 0;
// $back_message .= '-预售期每小时只能提交一次';
// }
// }
}
//只能3次抢票
if ($item->ts_autotimes > 3){
$auto_flag = 0;
$back_message .= '-抢票次数已到3次';
}
if($auto_flag == 0){
$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.')'.$back_message.'</td></tr>';
if($depart_diff==14){
}else{
log_message('error','自动出票错误信息:'.'<table border="1">'.$string.'</table>');
}
}else{
//单个订单提交
//echo $cold_sn.'<br>';
log_message('error','自动出票提交:'.$coli_id.'('.$cold_sn.')');
$this->booktickets($cold_sn,$bpe_sn,'','ctrip'); //调用出票
//$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.')可以自动出票</td></tr>';
}
}
print_r('<table border="1">'.$string.'</table>');
}
//创建一个方法用于接收所有的出票请求 //创建一个方法用于接收所有的出票请求
public function booktickets($cold_sn=null,$bpe_sn=null,$selectseat=null,$type=null){ public function booktickets($cold_sn=null,$bpe_sn=null,$selectseat=null,$type=null){
@ -256,6 +396,9 @@ class addorders extends CI_Controller{
case 'ctrip': case 'ctrip':
$this->ctripModel($data,$selectseat,$cold_sn); $this->ctripModel($data,$selectseat,$cold_sn);
break; break;
case 'lanhai':
$this->lanhaiModel($data,$selectseat,$cold_sn,$bpe_sn); //澜海多传用户SN列表
break;
} }
} }
@ -547,8 +690,8 @@ class addorders extends CI_Controller{
$reback["order"] = $orderId; $reback["order"] = $orderId;
$reback["mes"] = "订单提交成功,等待回调"; $reback["mes"] = "订单提交成功,等待回调";
}else{ }else{
$reback["mes"] = $confirm_back_json; // $reback["mes"] = $confirm_back_json;
$add_data->status = "e"; // $add_data->status = "e";
} }
//本地订单入库 //本地订单入库
@ -685,8 +828,23 @@ class addorders extends CI_Controller{
$passagersdata[$i]->countryCode = ""; $passagersdata[$i]->countryCode = "";
$passagersdata[$i]->contactMobile = ""; $passagersdata[$i]->contactMobile = "";
$passagersdata[$i]->contactEmail = ""; $passagersdata[$i]->contactEmail = "";
if (!empty($PassagerInfo->BPE_Nationality)){
$regionCode = $PassagerInfo->BPE_Nationality;
if ($regionCode =="TW" || $regionCode=="HK" || $regionCode=="MO"){
$passagersdata[$i]->regionCode = "CN";
}
else if ($regionCode=="UK" || $regionCode=="GB"){
$passagersdata[$i]->regionCode = "GB"; //英国传GB
}else{
$passagersdata[$i]->regionCode = $regionCode; //国家简码 美国us ,中国cn
}
}
$i++; $i++;
} }
//乘客人信息 //乘客人信息
$PostData->trainOrderInfo->orderInfo->ticketList['0']->passengerList = $passagersdata; $PostData->trainOrderInfo->orderInfo->ticketList['0']->passengerList = $passagersdata;
$PostData->trainOrderInfo->orderInfo->frontSeatFlag = 0; $PostData->trainOrderInfo->orderInfo->frontSeatFlag = 0;
@ -724,9 +882,16 @@ class addorders extends CI_Controller{
$add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60; $add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60;
$add_data->channel = 'ctrip'; $add_data->channel = 'ctrip';
$add_data->isauto = $this->isauto; $add_data->isauto = $this->isauto;
//出票次数
$countAuto = $this->train_system_model->get_autotimes($cold_sn);
$add_data->ts_autotimes = $countAuto->countauto + 1; //出票次数+1
$add_data->lanhaiData = ""; //途牛默认澜海数据为空
//存储到数据库 //存储到数据库
$this->train_system_model->add_orders($add_data); $this->train_system_model->add_orders($add_data);
// print_r(json_encode($PostData));
// die();
$ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json'); $ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json');
$ResponseData = json_decode($ResponseJson); $ResponseData = json_decode($ResponseJson);
@ -756,6 +921,8 @@ class addorders extends CI_Controller{
}else{ }else{
//log_message('error','下单失败提交数据记录:'.json_encode($PostData,JSON_UNESCAPED_UNICODE));
$reback["mes"] = $ResponseJson; $reback["mes"] = $ResponseJson;
$add_data->status = "e"; $add_data->status = "e";
@ -765,6 +932,7 @@ class addorders extends CI_Controller{
$msgData->OrderStatus = "1"; $msgData->OrderStatus = "1";
$msgData->ErrorMsg = $ResponseData->returnMessage; $msgData->ErrorMsg = $ResponseData->returnMessage;
$msgData->ordernumber = $OrderNumber; $msgData->ordernumber = $OrderNumber;
$msgData->addOrderData = json_encode($PostData,JSON_UNESCAPED_UNICODE); //失败了记录提交的订单数据
$this->train_system_model->update_orders_msg($msgData); $this->train_system_model->update_orders_msg($msgData);
} }
@ -839,6 +1007,97 @@ class addorders extends CI_Controller{
//print_r($ResponseData); //print_r($ResponseData);
//支付同步回调信息 {"Status":"SUCCESS","PartnerName":"guilintravel","OrderNumber":"guilintravel1546071576","OperationDateTime":"2018-12-29 16:19:37","RetCode":0,"ResponseStatus":{"Timestamp":"\/Date(1546071577236+0800)\/","Ack":"Success","Errors":[],"Extension":[]}} //支付同步回调信息 {"Status":"SUCCESS","PartnerName":"guilintravel","OrderNumber":"guilintravel1546071576","OperationDateTime":"2018-12-29 16:19:37","RetCode":0,"ResponseStatus":{"Timestamp":"\/Date(1546071577236+0800)\/","Ack":"Success","Errors":[],"Extension":[]}}
} }
//澜海请求出票
function lanhaiModel($data,$selectseat,$cold_sn,$bpe_sn){
$microtime = get_microtime();
$OrderNumber = SHUNTU_ORDERUSER.$microtime; //自生成订单号
//生成接口请求头参数
$mainOrderId = $OrderNumber;
$timestamp = $microtime;
$appId = LANHAI_appId;
$url = LANHAI_URL."api/open/push/order";
//拼接发送的报文
$PostData = new stdClass();
$PostData->mainOrderId = $mainOrderId;
$PostData->timestamp = $timestamp;
$PostData->appId = $appId;
//本地添加记录
$add_data = new stdClass();
$add_data->cold_sn = $cold_sn;
$add_data->ordernumber = $OrderNumber;
$add_data->returncode = '';
$add_data->status = '2';
$add_data->errormsg = '预定中';
$add_data->checi = $data['train']->FlightsNo;
$add_data->fromstationame = $data['train']->DepartAirport_cn;
$add_data->fromstationcode = $data['train']->DepartAirport;
$add_data->tostationame = $data['train']->ArrivalAirport_cn;
$add_data->tostationcode = $data['train']->ArrivalAirport;
$add_data->startdate = date('Y-m-d',strtotime($data['train']->DepartureDate));
$add_data->startime = date('H:i',strtotime($data['train']->DepartureTime));
$add_data->endtime = date('H:i',strtotime($data['train']->ArrivalTime));
$add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60;
$add_data->channel = 'lanhai';
$add_data->isauto = $this->isauto;
//出票次数
$countAuto = $this->train_system_model->get_autotimes($cold_sn);
$add_data->ts_autotimes = $countAuto->countauto + 1; //出票次数+1
//澜海数据
$lanhaiData = new stdClass();
$lanhaiData->selectseat = $selectseat;
$lanhaiData->bpe_sn = $bpe_sn;
$add_data->lanhaiData = json_encode($lanhaiData,JSON_UNESCAPED_UNICODE);
//存储到数据库
$this->train_system_model->add_orders($add_data);
//print_r(json_encode($PostData));
//die();
$ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json');
$ResponseData = json_decode($ResponseJson);
// print_r($ResponseJson);
// die();
//预定请求成功后执行支付
if($ResponseData->code == 0 && $ResponseData->success){
$reback["status"] = 1;
$reback["order"] = $OrderNumber;
$reback["mes"] = "订单提交成功,请等待澜海出票。在出票信息返回之前,千万不要改动汉特里面的订单数据,以免照成出票数据和订单数据不一致!!!!!".$ResponseData->msg ;
}else{
$reback["status"] = 0;
$reback["order"] = $OrderNumber;
$reback["mes"] = "订单提交失败,".$ResponseData->msg."。订单发送数据:".json_encode($PostData) ;
$add_data->status = "e";
//更新订单
$msgData = new stdClass();
$msgData->bookcallback = $ResponseJson;
$msgData->OrderStatus = "1";
if (isset($ResponseData->returnMessage)){
$msg = $ResponseData->returnMessage;
}else{
$msg = "没有错误信息!";
}
$msgData->ErrorMsg = $msg;
$msgData->ordernumber = $OrderNumber;
$msgData->addOrderData = json_encode($PostData,JSON_UNESCAPED_UNICODE); //失败了记录提交的订单数据
$this->train_system_model->update_orders_msg($msgData);
}
echo json_encode($reback,JSON_UNESCAPED_UNICODE);
}
} }

@ -413,6 +413,115 @@ class api extends CI_Controller{
} }
} }
//澜海账单导出api
public function lanhai_export_excel(){
set_time_limit(0);
//参数
$from_date = $this->input->post("from_date");
$to_date = $this->input->post("to_date");
$examine = $this->input->post("examine");
$importht = $this->input->post("importht");
$reback=array();//返回的数据
$reback["from_date"] = $from_date;
$reback["to_date"] = $to_date;
$reback["examine"] = $examine;
$reback["importht"] = $importht;
if(!empty($from_date) && !empty($to_date)){
//拼接发送的报文
$PostData = new stdClass();
$bodyInfo = new stdclass();
$bodyInfo->startTime = $from_date." 00:00:00";
$bodyInfo->endTime = $to_date." 23:59:59";
$bodyInfo->pageNum = 1;
$bodyInfo->pageSize = 20000;
$authentication = new stdClass(); //需加密的数据
$authentication->appId = LANHAI_appId;
//加密
$this->load->library("aesLanhai");
$aesUnit = new Security();
$resultData = $aesUnit->encryptData(json_encode($bodyInfo));
$PostData->bodyInfo = $resultData;
$PostData->authentication = $authentication;
//echo (json_encode($PostData));
$url = LANHAI_URL."api/open/bill";
$ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json');
$ResponseData = json_decode($ResponseJson);
if($ResponseData->code == 0 && $ResponseData->success){
$string_r = "";//输出
$arr = array();//整合完成的数组,写进excel表的数据
//账单导入到汉特。 先删除同一编码的数据,防止重复
if (!empty($importht)){
$BillSn = date('Ymd',strtotime($from_date)).date('Ymd',strtotime($to_date)); //这是获取开始结束日期作为编码,一定要和下面获取代码一样。
$this->BIZ_train_model->del_lanhai_bill($BillSn);
}
foreach ($ResponseData->data->records as $record) {
# code...
$arrRecord = array();
$arrRecord["saveDay"] = $record->saveDay;
$arrRecord["type"] = $record->type; //类型 包括:出票、低改高、出票退票、改签退票、退票
$arrRecord["mainOrderId"] = $record->mainOrderId; //订单号
$arrRecord["passengerName"] = $record->passengerName; //乘车人
$arrRecord["price"] = $record->price ;//金额,整数是支付票款,负数是退回金额
$arrRecord["wl"] = ""; //外联
$arrRecord["griName"]=""; //团号
$orderData = $this->train_system_model->get_OPIName($record->mainOrderId);
if (!empty($orderData)){
$arrRecord["wl"] = $orderData->OPIName;
$arrRecord["griName"] = $orderData->griName;
}
$arr[] = $arrRecord;
//账单导入到汉特。
if (!empty($importht)){
$AddHt_data = new stdClass(); //账单保存到汉特
$AddHt_data->BillSn = date('Ymd',strtotime($from_date)).date('Ymd',strtotime($to_date));
$AddHt_data->BillDate = $record->saveDay;
$AddHt_data->OrderId = $record->mainOrderId;
$AddHt_data->VEIName = LANHAI_appId;
$AddHt_data->From = "桂林海纳国际旅行社有限公司";
$AddHt_data->BillType = $record->type;
$AddHt_data->OrderType = null;
$AddHt_data->Cost = -($record->price);
$AddHt_data->Memo = $record->handleTime;
//入库
$this->BIZ_train_model->add_lanhai_bill($AddHt_data);
}
}
//print_r($arr);
if(empty($examine)){
//写入excel模板
header("Content-type:application/vnd.ms-excel;charset=utf-8");
header("Content-Disposition:attachment;filename=lanhai_train.xls");
$string_r= $this->load->view("lanhai_transaction_excel",array("arr"=>$arr),TRUE);
echo $string_r;die;
}else{
krsort($arr);//数组倒序
$reback["data"]=$arr;
$this->load->view('header');
$this->load->view('export_lanhai',$reback);
$this->load->view('footer');
}
}
}
}
//订单同步到trainsystem //订单同步到trainsystem
public function sync_orders(){ public function sync_orders(){

@ -304,6 +304,7 @@ class callback extends CI_Controller{
} }
$data_passager->seatdetail = $SeatNo; $data_passager->seatdetail = $SeatNo;
$data_passager->longtrainno = $tItems->longElecNo; $data_passager->longtrainno = $tItems->longElecNo;
$data_passager->lanhaiData = ""; //对应澜海那边的数据,这边设置为空
//入库 //入库
$this->train_system_model->add_passagers($data_passager); $this->train_system_model->add_passagers($data_passager);

@ -41,6 +41,9 @@ class innerTrainSearch extends CI_Controller{
case 'ctrip': case 'ctrip':
$this->NewCtripApi($date,$from,$to); $this->NewCtripApi($date,$from,$to);
break; break;
case 'lanhai':
$this->LanHaiApi($date,$from,$to);
break;
default : default :
$this->NewCtripApi($date,$from,$to); $this->NewCtripApi($date,$from,$to);
break; break;
@ -430,6 +433,224 @@ class innerTrainSearch extends CI_Controller{
} }
} }
/**
* @description: 三亚澜海商务的火车票查询接口
* @param {*} $data
* @param {*} $from
* @param {*} $to
* @param {*} $return
* @return {*}
* @Date Changed:
*/
public function LanHaiApi($date=null,$from=null,$to=null,$return=false){
if(!$date || !$from || !$to){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
$isCache = false;
$iseven = false;
$cachedata = false;
$now_time = time();
$differ = (strtotime($date) - $now_time) / 86400;
//屏蔽掉超过预售期的搜索,提高速度,2021-7-5 zp修改预售期为15天不再是30天
if($differ > 14){
$date = date('Y-m-d',strtotime('+7day'));
$iseven = true;
}
//生成请求链接
$url = "http://ctrip.lhticket.com/api/open/query/train";
//构建接口参数POST方式JSON格式
$post_data = new stdClass();
$post_data->date = $date;
$post_data->fromStationCode = $from;
$post_data->toStationCode = $to;
$api_start_time = microtime(true);
// //获取数据
// echo ($url . "<hr/>");
// echo(json_encode($post_data) . "<hr/>");
$ResponseJson = GetPost_http($url,json_encode($post_data),'json');
$api_end_time = microtime(true);
$ResponseData = json_decode($ResponseJson);
// // 获取 microtime
// $microtime = microtime(true);
// // 将时间戳转换为毫秒
// $timestampInMilliseconds = round($microtime * 1000);
// echo $timestampInMilliseconds;
// echo($ResponseJson);
// die();
$api_responsive_time = $api_end_time - $api_start_time;
if(empty($ResponseData->data)){
log_message('error','lanhai_train|status:trains is empty |相应时间:'.$api_responsive_time);
}else{
log_message('error','lanhai_train|status:'.$ResponseData->success.'|相应时间:'.$api_responsive_time);
}
//定义返回的json
$ReturnData = new stdClass();
$ReturnData->httpstatus = 200;
$ReturnData->data = new stdClass();
$ReturnData->data->seven = $iseven;
$ReturnData->data->cache = $isCache;
$ReturnData->data->supplier = 'lanhai';
$ReturnData->data->result = array();
$ReturnData->data->map = new stdClass();
$obj = array();
$i = 0;
$PriceStr = '';
//数据解析
if(!empty($ResponseData->data)){
foreach ($ResponseData->data as $TrainInfo){
$obj[$TrainInfo->fromStationCode] = $TrainInfo->fromStationName;
$obj[$TrainInfo->toStationCode] = $TrainInfo->toStationName;
$SeaType = '';
//余数初始化为空
$gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null;
foreach($TrainInfo->seats as $Seats){
$ticketLeft = 0 ; //澜海余票会传有和无的中文
if ($Seats->count == "有"){
$ticketLeft = 99;
}else if ($Seats->count == "无"){
$ticketLeft = 0;
}else {
$ticketLeft = $Seats->count;
}
//从香港出发的 D/G 火车加价3%
if($from == 'XJA'){
if(stripos($TrainInfo->trainCode, "G") !== false || stripos($TrainInfo->trainCode, "D") !== false){
$Seats->ticketPrice = $Seats->ticketPrice * 1.03;
}
}
if(strstr($Seats->seatTypeName,'高级软卧')){
$gjrwXiaPrice = $Seats->ticketPrice * 10;
$SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->ticketPrice.'",';
$gjrwNum = $ticketLeft;
}
if(strstr($Seats->seatTypeName,'软卧') ){
$rwPrice = $Seats->ticketPrice * 10;
$SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->ticketPrice.'",';
$rwNum = $ticketLeft;
}
if(strstr($Seats->seatTypeName,'一等卧')){
$SeaType .= '"YDW":"¥'.$Seats->ticketPrice.'",';
$ydwNum = $ticketLeft;
}
if($Seats->seatTypeName == '软座'){
$rzPrice = $Seats->ticketPrice * 10;
$SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->ticketPrice.'",';
$rzNum = $ticketLeft;
}
if($Seats->seatTypeName == '特等座'){
$SeaType .= '"P":"¥'.$Seats->ticketPrice.'",';
$tdzNum = $ticketLeft;
}
if($Seats->seatTypeName == '无座'){
$SeaType .= '"WZ":"¥'.$Seats->ticketPrice.'",';
$wzNum = $ticketLeft;
}
if($Seats->seatTypeName == '硬座'){
$yzPrice = $Seats->ticketPrice * 10;
$SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->ticketPrice.'",';
$yzNum = $ticketLeft;
}
if($Seats->seatTypeName == '二等座'){
$SeaType .= '"O":"¥'.$Seats->ticketPrice.'",';
$edzNum = $ticketLeft;
}
if($Seats->seatTypeName == '一等座'){
$SeaType .= '"M":"¥'.$Seats->ticketPrice.'",';
$ydzNum = $ticketLeft;
}
if($Seats->seatTypeName == '商务座'){
$swzPrice = $Seats->ticketPrice * 10;
$SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->ticketPrice.'",';
$swzNum = $ticketLeft;
}
if(strstr($Seats->seatTypeName,'硬卧')){
$ywPrice = $Seats->ticketPrice * 10;
$SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->ticketPrice.'",';
$ywNum = $ticketLeft;
}
if(strstr($Seats->seatTypeName, '二等卧')){
$SeaType .= '"EDW":"¥'.$Seats->ticketPrice.'",';
$erwNum = $ticketLeft;
}
if(strstr($Seats->seatTypeName,'动卧')){
$SeaType .= '"F":"¥'.$Seats->ticketPrice.'",';
$dwNum = $ticketLeft;
}
$PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->trainCode.'"';
}
//对返回的数据进行容错处理
$gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->ticketPrice,$gjrwNum,$iseven) : '';
$rwNum = isset($rwNum) ? ticket_exchange($Seats->ticketPrice,$rwNum,$iseven) : '';
$rzNum = isset($rzNum) ? ticket_exchange($Seats->ticketPrice,$rzNum,$iseven) : '';
$tdzNum = isset($tdzNum) ? ticket_exchange($Seats->ticketPrice,$tdzNum,$iseven) : '';
$wzNum = isset($wzNum) ? ticket_exchange($Seats->ticketPrice,$wzNum,$iseven) : '';
$ywNum = isset($ywNum) ? ticket_exchange($Seats->ticketPrice,$ywNum,$iseven) : '';
$yzNum = isset($yzNum) ? ticket_exchange($Seats->ticketPrice,$yzNum,$iseven) : '';
$edzNum = isset($edzNum) ? ticket_exchange($Seats->ticketPrice,$edzNum,$iseven) : '';
$ydzNum = isset($ydzNum) ? ticket_exchange($Seats->ticketPrice,$ydzNum,$iseven) : '';
$swzNum = isset($swzNum) ? ticket_exchange($Seats->ticketPrice,$swzNum,$iseven) : '';
$dwNum = isset($dwNum) ? ticket_exchange($Seats->ticketPrice,$dwNum,$iseven) : '';
$ydwNum = isset($ydwNum) ? ticket_exchange($Seats->ticketPrice,$ydwNum,$iseven) : '';
$erwNum = isset($erwNum) ? ticket_exchange($Seats->ticketPrice,$erwNum,$iseven) : '';
//时间处理
$startTime = date("H:i", strtotime($TrainInfo->startTime));;
$arrivalTime = date("H:i", strtotime($TrainInfo->arrivalTime));;
$runMin = $TrainInfo->travelTime % 60;
$runHour = ($TrainInfo->travelTime - $runMin) / 60;
$ReturnData->data->result[$i] = '|预定|'.$TrainInfo->trainNo.'|'.$TrainInfo->trainCode.'|'.$TrainInfo->fromStationName.'|'.$TrainInfo->toStationName.'|'.$TrainInfo->fromStationCode.'|'.$TrainInfo->toStationCode.'|'.$startTime.'|'.$arrivalTime.'|'.$runHour.':'.$runMin.'|Y||'.date('Ymd',strtotime($date)).'||||||||'.$gjrwNum.'||'.$rwNum.'|'.$rzNum.'|'.$tdzNum.'|'.$wzNum.'||'.$ywNum.'|'.$yzNum.'|'.$edzNum.'|'.$ydzNum.'|'.$swzNum.'|'.$dwNum.'|||'.$ydwNum.'|'.$erwNum;
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$PriceStr.'},"messages":[],"validateMessages":{}}';
$ReturnData->data->price[$i] = $data;
$i++;
}
}
//print_r($ResponseData);die();
$ReturnData->data->map = (object)$obj;
if($return){
return json_encode($ReturnData);
}else{
echo json_encode($ReturnData);
}
}
}
//App项目组的接口 暂时不用 //App项目组的接口 暂时不用
public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){ public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){
set_time_limit(0); set_time_limit(0);
@ -676,8 +897,8 @@ class innerTrainSearch extends CI_Controller{
exit('传参错误!'); exit('传参错误!');
} }
$back_json = $this->NewCtripApi($train_date,$fromStation,$toStation,true); //$back_json = $this->NewCtripApi($train_date,$fromStation,$toStation,true);
$back_json = $this->LanHaiApi($train_date,$fromStation,$toStation,true);
$train_info = new stdClass(); $train_info = new stdClass();
$train_info = json_decode($back_json); $train_info = json_decode($back_json);

@ -0,0 +1,703 @@
<?php
use League\CLImate\TerminalObject\Basic\Json;
defined('BASEPATH') or exit('No direct script access allowed');
class LanHaiTicket extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("BIZ_train_model");
$this->load->model("train_system_model");
$this->load->helper('train');
$this->db_train_zw = $this->config->item('db_train_zw');
$this->train_zw = $this->config->item('train_zw');
$this->black_list = $this->config->item('black_list');
$this->load->library("lanhaidata");
$this->train_certificateType = $this->config->item('train_certificateType');
$this->train_refundType = $this->config->item('train_refundType');
}
public function index()
{
//出票锁单接口: https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/pushorderdetail?mainOrderId=HN1720670129499
//出票回调接口https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/pushorderresult/
//退票锁单接口: https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundorderdetail?dataId=82033
//退票回调接口: https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundorderresult/
//退款回调接口https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundpriceresult/
//http://ct.tms.lhticket.com 账号: GLhaina 密码123456
}
/**
* @description: 澜海获取锁单接口通过get方式获取参数mainOrderId订单号
* @return {*}
* @Date Changed:
* 网前地址https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/pushorderdetail?mainOrderId=HN1720670129499
*/
public function pushOrderDetail()
{
//获取订单号
$mainOrderId = $this->input->get_post("mainOrderId");
$aes = $this->input->get_post("aes");
if (strpos($mainOrderId, 'HN') !== false) { //由于我们的订单号是HN开头的所以这里做下判断
//根据mainOrderId获取火车票的信息
$ticketfrom = $this->train_system_model->ticketfrom($mainOrderId);
if (!empty($ticketfrom)) {
$cold_sn = $ticketfrom->ts_cold_sn;
$lanhaiRecord = json_decode($ticketfrom->ts_lanhaiData); //澜海特殊数据字段保存了选择的出票人员Id
$data['train'] = $this->BIZ_train_model->biz_order_detail($cold_sn);
$coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($cold_sn)['0']->COLI_ID;
if (empty($this->BIZ_train_model->get_operatorInfo($coli_id))) {
$data['email'] = 'vivi@hainatravel.com';
} else {
$data['email'] = $this->BIZ_train_model->get_operatorInfo($coli_id)['0']->OPI_Email;
}
//乘客信息
$bpe_sn = '';
if (!empty($lanhaiRecord)) {
$bpe_sn = $lanhaiRecord->bpe_sn;
}
if (!empty($bpe_sn)) {
$data['people_list'] = $this->BIZ_train_model->in_bpesn_people_info($bpe_sn);
} else {
//没有找到选择的人员列表,就查询整个订单的人员列表
$people_arr = $this->BIZ_train_model->biz_people($cold_sn);
//护照号如果在黑名单的就不自动出票
foreach ($people_arr as $people_info) {
$bpe_sn .= $people_info->BPE_SN . ',';
}
$bpe_sn = substr($bpe_sn, 0, strlen($bpe_sn) - 1);
$data['people_list'] = $this->BIZ_train_model->in_bpesn_people_info($bpe_sn);
}
$AdultNum = 0;
$ChildNum = 0;
$i = 0;
$lanhaiData = new lanhaiData();
$lanhaiCountryData = json_decode($lanhaiData->CountryData); //国家三字码基础信息
$passagersdata = array();
foreach ($data['people_list'] as $PassagerInfo) {
//乘客类型
switch ($PassagerInfo->BPE_GuestType) {
case 1:
$PiaoType = 1;
$PiaoTypeName = "成人票";
$AdultNum++;
break;
case 2:
$PiaoType = 2;
$PiaoTypeName = "儿童票";
$ChildNum++;
break;
default: //外国人应该就两种票吧
$PiaoType = 1;
$PiaoTypeName = "成人票";
break;
}
//证件类型
switch ($PassagerInfo->BPE_PassportType) {
case 'Chinese ID':
$PassportTypeseId = 1;
$PassportTypeseidName = "二代身份证";
break;
case 'MainlandTravel Permit from Hong Kong and Macau':
$PassportTypeseId = 7;
$PassportTypeseidName = "回乡证";
break;
case 'Travel Permit from Hong Kong / Macau':
$PassportTypeseId = 7;
$PassportTypeseidName = "回乡证";
break;
case 'Travel Permit from Taiwan':
$PassportTypeseId = 8;
$PassportTypeseidName = "台胞证";
break;
default:
$PassportTypeseId = 2;
$PassportTypeseidName = "护照";
break;
}
$passagersdata[$i] = new stdClass();
$passagersdata[$i]->passengerName = chk_sp_name($PassagerInfo->BPE_FirstName . $PassagerInfo->BPE_MiddleName . $PassagerInfo->BPE_LastName);
$passagersdata[$i]->passengerType = $PiaoType; //乘客类型1 成人票2 儿童票
$passagersdata[$i]->passportType = $PassportTypeseId; //证件类型,身份证 1护照 2回乡证 7台胞证 8外国人永久居留身份证 9港澳通行证 10台湾通行证 22港澳台居民居住证 23
$passagersdata[$i]->passportNumber = $PassagerInfo->BPE_Passport; //护照号
$passagersdata[$i]->passengerId = $PassagerInfo->BPE_SN; //乘客ID
$regionCode = "";
$countryName = "";
if (!empty($PassagerInfo->BPE_Nationality)) {
$htCode = $PassagerInfo->BPE_Nationality;
if ($htCode == "TW" || $htCode == "HK" || $htCode == "MO") {
$regionCode = "CHN";
$countryName = "中国";
} else {
foreach ($lanhaiCountryData as $cItem) {
if ($cItem->code == $htCode) {
$regionCode = $cItem->standCode;
$countryName = $cItem->name;
break;
}
}
}
}
$passagersdata[$i]->regionCode = $regionCode; //国家简码 美国USA ,中国CHN
$passagersdata[$i]->countryName = $countryName; //国家名称 中文名称
$passagersdata[$i]->passportExpireDate = date('Y-m-d', strtotime($PassagerInfo->BPE_PassExpdate)); //证件到期
$passagersdata[$i]->birthday = date('Y-m-d', strtotime($PassagerInfo->BPE_BirthDate)); //出生日期
$i++;
}
//拼接发送的报文
$PostData = new stdClass();
$PostData->mainOrderId = $mainOrderId;
$currentTime = date("Y-m-d H:i:s");
$PostData->expireTime = date("Y-m-d H:i:s", strtotime($currentTime . ' +30 minutes'));
$PostData->currentTime = $currentTime;
$PostData->agentCode = LANHAI_appId;
$PostData->contactMobile = "18877331805";
$PostData->extendParams = "";
$PostData->ticketsItems = array();
$PostData->ticketsItems['0'] = new stdClass();
$PostData->ticketsItems['0']->deliveryTicketId = $cold_sn; //行程id,cold_sn
$PostData->ticketsItems['0']->fromStationName = $data['train']->DepartAirport_cn;
$PostData->ticketsItems['0']->toStationName = $data['train']->ArrivalAirport_cn;
$PostData->ticketsItems['0']->trainNumber = $data['train']->FlightsNo; //车次
$PostData->ticketsItems['0']->departTime = date('Y-m-d H:i', strtotime($data['train']->DepartureTime)); //发车时间
$PostData->ticketsItems['0']->arrivalTime = date('Y-m-d H:i', strtotime($data['train']->ArrivalTime)); //到达时间
$PostData->ticketsItems['0']->ticketCount = count($data["people_list"]);
$PostData->ticketsItems['0']->ticketPrice = $data['train']->adultcost; //车票单价,单位(元)
$seatName = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称,中文
$PostData->ticketsItems['0']->seatName = $seatName;
$PostData->ticketsItems['0']->acceptSeats = array(); //坐席选项
$lanhaiSeatTypes = json_decode($lanhaiData->seatTypes); //座位选项
foreach ($lanhaiSeatTypes as $seatItem) {
if ($seatItem->seatName == $seatName) {
$PostData->ticketsItems['0']->acceptSeats = $seatItem->seatItems;
break;
}
}
$acceptSeatRemark = "优先出【同排ABCDF座】无法满足可出任意座位不接受站票";
if (($AdultNum + $ChildNum) > 1) {
//多人时
if (strstr($seatName, "卧")) {
$acceptSeatRemark = "客人想要2张下铺最好在同一房间。下铺不足时至少保证在同一房间否则不要出票";
}
} else {
//单人时
}
$PostData->ticketsItems['0']->acceptSeatRemark = $acceptSeatRemark; //行程坐席要求
$PostData->ticketsItems['0']->ticketType = 1;
$PostData->ticketsItems['0']->passengerInfos = $passagersdata;
$total_price = $AdultNum * $data['train']->adultcost + $ChildNum * $data['train']->childcost; //总价
$PostData->orderPrice = $total_price; //订单总价,单位(元)
//加密方式显示
$this->load->library("aesLanhai");
$aesUnit = new Security();
$resultData = $aesUnit->encryptData(json_encode($PostData));
//$resultData = $aesUnit->decryptData($resultData); //测试加解密是否正常。
if ($aes == "false") {
//加个明文显示判断,用来检查数据
$resultData = json_encode($PostData, JSON_UNESCAPED_UNICODE);
}
echo $resultData;
} else {
$ResultNoticeResponse = new stdClass();
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "mainOrderId错误";
echo json_encode($ResultNoticeResponse);
}
}
}
/**
* 出票结果回调信息
* 网前URLhttps://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/pushorderresult/
*/
public function pushOrderResult()
{
$back_json = file_get_contents('php://input');
log_message('error', '澜海出票回调信息:' . $back_json);
$lanhai_backdata = json_decode($back_json);
if (!empty($lanhai_backdata)) {
//判断回调信息是否正确,主要判断是否是本企业的回调信息
$companyId = LANHAI_appId;
$messageIdentity = $lanhai_backdata->authentication->appId; //传递的企业ID
$ResultNoticeResponse = new stdClass();
if ($companyId == $messageIdentity) {
$ResultNoticeResponse->retCode = 0;
$ResultNoticeResponse->success = true;
$ResultNoticeResponse->message = "处理成功!";
} else {
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "appId错误";
}
echo json_encode($ResultNoticeResponse);
//处理回调的内容,保存到本地及翰特
$update_data = new stdClass();
$update_data->ServiceName = "lanhai.ticketresult";
$update_data->ordernumber = '';
$update_data->seatsinfo = '';
$update_data->TicketCheck = '';
$update_data->bookcallback = '';
$update_data->confirmcallback = '';
$update_data->returncallback = '';
$update_data->OrderTotleFee = 0;
$update_data->ElectronicOrderNumber = '';
$update_data->reschedulecallback = '';
$update_data->OrderTicketTime = '';
$update_data->operateTradeNo = "";
if (!empty($lanhai_backdata->bodyInfo)) {
// //需要解密
$this->load->library("aesLanhai");
$aesUnit = new Security();
$bodyINfo = json_decode($aesUnit->decryptData($lanhai_backdata->bodyInfo));
if ($bodyINfo->failCode == 0) {
$update_data->OrderStatus = '4';
if (isset($bodyINfo->resultMsg)) {
$update_data->ErrorMsg = $bodyINfo->resultMsg;
} else {
$update_data->ErrorMsg = '出票成功';
}
} else {
$update_data->OrderStatus = '5';
if (isset($bodyINfo->resultMsg)) {
$update_data->ErrorMsg = $bodyINfo->resultMsg;
} else {
$update_data->ErrorMsg = '出票失败';
}
}
$update_data->ordernumber = $lanhai_backdata->authentication->mainOrderId;
if (isset($bodyINfo->orderPrice)) {
$update_data->OrderTotleFee = $bodyINfo->orderPrice; //总价
}
if (isset($bodyINfo->payTradeNumber)) {
$update_data->operateTradeNo = $bodyINfo->payTradeNumber; ////支付宝流水
}
$update_data->ticketresultcallback = json_encode($bodyINfo);
//$update_data->OrderTicketTime = $lanhai_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketTime;
//新接口数据,不一定保存到数据库里面,原订单已有,做个记录
if (isset($bodyINfo->ticketSuccessTime)) {
$update_data->ticketSuccTime = $bodyINfo->ticketSuccessTime; //出票成功时间
}
// $update_data->orderType = $lanhai_backdata->ticketResult->orderMasterInfo->orderType; //订单类型 0电子票 1配送票 2人工客票 3抢票订单
// $update_data->contactName = $lanhai_backdata->ticketResult->orderMasterInfo->contactName; //联系人
// $update_data->mobileNo = des_decrypt($lanhai_backdata->ticketResult->orderMasterInfo->mobileNo,$key); //联系电话 (DES加密
//人员及车票
if (isset($bodyINfo->eOrderNumber)) {
$elecNo = $bodyINfo->eOrderNumber; //电子订单号即12306取票号
$update_data->ElectronicOrderNumber = $elecNo;
}
if (isset($bodyINfo->ticketList)) { //如果订票成功,需要保存的数据
$data_passager = new stdClass();
foreach ($bodyINfo->ticketList as $tItems) {
if (isset($tItems->ticketCheck)) {
$checkWindow = $tItems->ticketCheck; //检票口
$update_data->TicketCheck = $checkWindow;
}
$update_data->trainNo = $tItems->trainNumber; //车次
$update_data->departTime = $tItems->departTime; //车次出发时间
foreach ($tItems->passengerList as $pItems) {
$data_passager->ordernumber = $update_data->ordernumber;
//人员列表
$data_passager->status = '4';
$certificateType = $this->train_certificateType[$pItems->passportType]; //证件类型,身份证 1护照 2回乡证 7台胞证 8外国人永久居留身份证 9港澳通行证 10台湾通行证 22港澳台居民居住证 23
$data_passager->identitytype = $certificateType;
$data_passager->realname = $pItems->passengerName;
$data_passager->numberid = $pItems->passportNumber; //证件号码
//$data_passager->birthday = $pItems->birthday;
if ($pItems->passengerType == 2) {
$passengerType = "儿童";
} else {
$passengerType = "成人";
}
$data_passager->ticketype = $passengerType; //乘客类型 1成人 2儿童
$data_passager->seatype = $pItems->seatName; //坐席类型
$data_passager->ticketprice = $pItems->realTicketPrice; //实际单价(元)
$SeatNo = "";
if (isset($pItems->carriageNo)) {
$SeatNo .= $pItems->carriageNo . "车厢";
}
if (isset($pItems->seatNo)) {
$SeatNo .= $pItems->seatNo; ////坐席号
}
$data_passager->seatdetail = $SeatNo;
$passengerId = $pItems->passengerId; // //乘客id
$data_passager->longtrainno = $passengerId;
$jsonLanhaiData = new stdClass(); //澜海退票需要传递一些数据,尽量保存到这个里面。这样不用从翰特里面读取了。
$jsonLanhaiData->eOrderNumber = $update_data->ElectronicOrderNumber; //取票号
$data_passager->lanhaiData = json_encode($jsonLanhaiData);
//入库
$this->train_system_model->add_passagers($data_passager);
}
/****************************************************************************************/
//添加支付记录
$add_train_payment_data = new stdClass();
$add_train_payment_data->TOC_Memo = $update_data->ordernumber . '出票费';
$add_train_payment_data->TOC_VEI_SN = "33653";
//根据订单号获取cold_sn
$order_info = $this->train_system_model->get_order_info($update_data->ordernumber);
$cold_sn = $order_info->ts_cold_sn;
$add_train_payment_data->TOC_COLD_SN = $cold_sn;
$add_train_payment_data->TOC_TrainNumber = $update_data->trainNo;
$add_train_payment_data->TOC_DepartureDate = date('Y-m-d', strtotime($update_data->departTime));
$add_train_payment_data->TOC_TicketCost = $update_data->OrderTotleFee;
$passengerNum = $tItems->ticketCount; //车票数
if ($passengerNum>0){
$poundage = $passengerNum*10;
}else{
$poundage = 0;
}
$add_train_payment_data->poundage = $poundage; //手续费
$add_train_payment_data->FOI_TrainNetOrderNo = $update_data->ElectronicOrderNumber; //电子票号
//print_r($add_train_order_data);die();
$this->BIZ_train_model->add_train_payment($add_train_payment_data);
//记录供应商(瀚特)
$this->BIZ_train_model->update_cold_planvei_sn($cold_sn, '33653');
}
}
}
//更新订单信息(出票系统)
$this->train_system_model->update_orders($update_data);
}
}
/**
* 澜海退票锁单接口通过get方式获取前参数dataId
* 网前地址https://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundorderdetail?dataId=82033
*/
public function refundOrderDetail()
{
//获取客人ID
$dataId = $this->input->get_post("dataId");
$aes = $this->input->get_post("aes");
//根据客人ID获取退票数据
$passenger_data = $this->train_system_model->get_passenger_byId($dataId);
if (!empty($passenger_data)) {
//拼接发送的报文
$PostData = new stdClass();
$PostData->id = $passenger_data->tst_id; //dataId
$PostData->mainOrderId = $passenger_data->tst_ordernumber; //出票订单id如产生过线上改签成功则使用改签的dataId
$PostData->priority = 1; //0紧急退票1非紧急退票 默认1
//获取出票是保存的lanhaiData
if (!empty($passenger_data->tst_lanhaiData)){
$lanhaiData = json_decode($passenger_data->tst_lanhaiData);
}
$eOrderNumber = "";
if (isset($lanhaiData->eOrderNumber)){
$eOrderNumber = $lanhaiData->eOrderNumber; //取票号
}
$PostData->eOrderNumber = $eOrderNumber; //取票号
$PostData->passengerType = $passenger_data->tst_ticketype."票"; //票种
$PostData->passportType = $passenger_data->tst_identitytype; //"身份证"; //证件类型
$PostData->passportName = $passenger_data->tst_realname; //姓名
$PostData->passportNumber = $passenger_data->tst_numberid; //证件号
$PostData->departStation = $passenger_data->ts_fromstationame; //发站
$PostData->arriveStation = $passenger_data->ts_tostationame; //到站
$rPrice = $passenger_data->tst_ticketprice;
$PostData->ticketPrice = $rPrice; //票价(元)
$PostData->preRefundPrice = $rPrice; //原票价(元)
$PostData->percent = 100; //比例 默认100,我只取返回记录的价格。不管汉特的价格
$PostData->trainNo = $passenger_data->ts_checi ; //车次
//车厢及座位分解
$tst_seatdetail = $passenger_data->tst_seatdetail;
$carriageNo = "";
$seatNo = "";
if (strpos($tst_seatdetail,"车厢")!=false){
$arrSeat = explode("车厢",$tst_seatdetail);
$carriageNo = $arrSeat[0];
$seatNo = $arrSeat[1];
}
$PostData->carriageNo = $carriageNo; //车厢
$PostData->seatName = $passenger_data->tst_seatstype; //席别
$PostData->seatNo = $seatNo; //席位号
$strDt = $passenger_data->ts_startdate." ".$passenger_data->ts_startime;
$DepartureTime = date('Y-m-d H:i', strtotime($strDt));
// 出发时间前三十分钟的时间
$thirtyMinutesAgo = strtotime('-30 minutes', strtotime($DepartureTime));
$dealine = date('Y-m-d H:i', $thirtyMinutesAgo);
$PostData->ticketTime = $DepartureTime; //发车时间
$PostData->createTime = ""; //可空
$PostData->deadline = $dealine; //处理截止时间 建议最晚处理时间设置为发车前30分钟
$PostData->refundTime = ""; //可空
$PostData->getTicketTime = ""; //可空
$PostData->refundPrice = 0; //可空
$PostData->firstImage = null; //可空
$PostData->secondImage = null; //可空
$PostData->lockStatus = 0; //可空
$PostData->lockUser = ""; //可空
$PostData->status = 0; //可空
$PostData->longEOrderNumber = ""; //可空
$PostData->extendParams = ""; //拓展json对象
//加密方式显示
$this->load->library("aesLanhai");
$aesUnit = new Security();
$resultData = $aesUnit->encryptData(json_encode($PostData));
//$resultData = $aesUnit->decryptData($resultData); //测试加解密是否正常。
if ($aes == "false") {
//加个明文显示判断,用来检查数据
$resultData = json_encode($PostData, JSON_UNESCAPED_UNICODE);
}
echo $resultData;
} else {
$ResultNoticeResponse = new stdClass();
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "dataId错误";
echo json_encode($ResultNoticeResponse);
}
}
/**
* 澜海退票返回信息
* 网前URLhttps://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundorderresult/
*/
public function refundOrderResult()
{
$back_json = file_get_contents('php://input');
log_message('error', '澜海退票回调信息:' . $back_json);
$lanhai_backdata = json_decode($back_json);
if (!empty($lanhai_backdata)) {
$dataId = $lanhai_backdata->id;
//根据客人ID获取退票数据
$passenger_data = $this->train_system_model->get_passenger_byId($dataId);
$ResultNoticeResponse = new stdClass();
if (!empty($passenger_data)) {
$ResultNoticeResponse->retCode = 0;
$ResultNoticeResponse->success = true;
$ResultNoticeResponse->message = "处理成功!";
echo json_encode($ResultNoticeResponse);
//处理回调的内容,保存到本地及翰特
$update_data = new stdClass();
$update_data->ServiceName = '';
$update_data->ordernumber = '';
$update_data->seatsinfo = '';
$update_data->TicketCheck = '';
$update_data->bookcallback = '';
$update_data->confirmcallback = '';
$update_data->returncallback = '';
$update_data->OrderTotleFee = 0;
$update_data->ElectronicOrderNumber = '';
$update_data->reschedulecallback = '';
$update_data->OrderTicketTime = '';
//新字段
$update_data->operateTradeNo ="";
$update_data->ordernumber = $passenger_data->tst_ordernumber;
$passpager_info = new stdClass();
$passpager_info->returncallback = $back_json;
$passpager_info->ordernumber = $passenger_data->tst_ordernumber;
$passpager_info->tst_id = $dataId; //乘客ID用来更新
//回调的数据正确,开始判断成功还是失败。
if (isset($lanhai_backdata->refundPrice)){ //如果有退款金额,说明退票成功
//退票成功
$update_data->OrderStatus = '7';
//退票时还需要单独对对每个乘客存储回调信息
$passpager_info->status = '7';
$refundPrice = $lanhai_backdata->refundPrice; //退款金额
$update_data->ErrorMsg = "退票成功,"."退票金额:".$refundPrice;
//退票手续费保存到数据库
//翰特添加退款记录
$returnticket = new stdClass();
$return_order = $update_data->ordernumber;
$returnticket->TOC_VEI_SN = "33653";
//根据订单号获取cold_sn
$cold_sn = $passenger_data->ts_cold_sn;
$returnSuccTime = date("Y-m-d H:i:s");
$memo = $return_order.'_退票成功_' . $dataId; //退票集合信息 ,用$dataId是为了标识唯一性
$returnticket->TOC_Memo = $memo;
$returnticket->TOC_COLD_SN = $cold_sn;
$returnticket->TOC_TrainNumber = $passenger_data->ts_checi;
$returnticket->TOC_DepartureDate = $passenger_data->ts_startdate;
$returnticket->TOC_TicketCost = -15;
//print_r($add_train_payment_data);die();
$this->BIZ_train_model->returnticket_train($returnticket);
}else{
//退票失败
$update_data->OrderStatus = '8';
//失败也保存下信息
$passpager_info->status = '8';
$update_data->ErrorMsg = "退票失败:".$lanhai_backdata->failReason;
}
$this->train_system_model->return_update_passager_lanhai($passpager_info);
$update_data->returncallback = $back_json;
//更新订单信息(出票系统)
$this->train_system_model->update_orders($update_data);
} else {
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "退票订单数据没找到!";
echo json_encode($ResultNoticeResponse);
}
}
}
/**
* 澜海退款回调信息
* 网前URLhttps://www.mycht.cn/info.php/apps/trainsystem/lanhaiticket/refundpriceresult/
*/
public function refundPriceResult(){
$back_json = file_get_contents('php://input');
log_message('error', '澜海退款回调信息:' . $back_json);
$lanhai_backdata = json_decode($back_json);
if (!empty($lanhai_backdata))
{
$id = $lanhai_backdata->id; //线上低改高后的订单为dataId其他情况为出票的mainOrderId
//先判断是否是低改高的订单,目前我们没有改签。
if (1==2){
//这里是改签的操作,目前没有
}else{
//这里的ID是mainOrderId 出票订单ID
$order_info = $this->train_system_model->get_order_info($id);
if (!empty($order_info)){
$ResultNoticeResponse = new stdClass();
$ResultNoticeResponse->retCode = 0;
$ResultNoticeResponse->success = true;
$ResultNoticeResponse->message = "处理成功!";
echo json_encode($ResultNoticeResponse); //找到订单 对应数据就返回处理成功的结果,后面的错误不关澜海那边的事。
//处理回调的内容,保存到本地及翰特
$update_data = new stdClass();
$update_data->ServiceName = '';
$update_data->ordernumber = '';
$update_data->seatsinfo = '';
$update_data->TicketCheck = '';
$update_data->bookcallback = '';
$update_data->confirmcallback = '';
$update_data->returncallback = '';
$update_data->OrderTotleFee = 0;
$update_data->ElectronicOrderNumber = '';
$update_data->reschedulecallback = '';
$update_data->OrderTicketTime = '';
//新字段
$update_data->operateTradeNo ="";
$isOnline = $lanhai_backdata->isOnline; //1线上退款0线下退款
if ($isOnline==1){
$refundType = "线上退款";
}else{
$refundType = "线下退款";
}
$refundTime = date("Y-m-d H:i:s"); //退款时间
$return_money = $lanhai_backdata->refundPrice; //退款金额,单位元
$refundId = $lanhai_backdata->refundId; //退款唯一id(幂等性)
$update_data->ordernumber = $order_info->ts_ordernumber;
$update_data->OrderStatus = '11'; //11是订单退款
$update_data->ErrorMsg = '退款:'.$refundType." 金额:".$return_money." time:". $refundTime;
$update_data->refundcallback = $back_json;
//翰特添加退款记录
$refund_train_payment = new stdClass();
$return_order = $order_info->ts_ordernumber;
$refund_train_payment->TOC_VEI_SN = "33653";
$cold_sn = $order_info->ts_cold_sn;
//print_r($order_info);
$memo = $return_order.'_'.$refundType. '_' . $refundId; //退款集合信息
$refund_train_payment->TOC_Memo = $memo;
$refund_train_payment->TOC_COLD_SN = $cold_sn;
$refund_train_payment->TOC_TrainNumber = $order_info->ts_checi;
$refund_train_payment->TOC_DepartureDate = $order_info->ts_startdate;
$refund_train_payment->TOC_TicketCost = -$return_money;
//print_r($add_train_payment_data);die();
$this->BIZ_train_model->refund_train_payment($refund_train_payment);
//更新订单信息(出票系统)
$this->train_system_model->update_orders($update_data);
}else{
$ResultNoticeResponse = new stdClass();
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "订单对应数据没找到!";
echo json_encode($ResultNoticeResponse);
}
}
}
}
}
/* End of file lanhaiticket.php */

@ -55,14 +55,15 @@ class pages extends CI_Controller{
$list->cols_id=$cols_id; $list->cols_id=$cols_id;
} }
//查询聚合余额 // //查询聚合余额
$back_data = GetPost_http("http://op.juhe.cn/trainTickets/balance.php?key=79f03107b921ef31310bd40a1415c1cb"); // $back_data = GetPost_http("http://op.juhe.cn/trainTickets/balance.php?key=79f03107b921ef31310bd40a1415c1cb");
$back_data = json_decode($back_data); // $back_data = json_decode($back_data);
if(!empty($back_data->result)){ // if(!empty($back_data->result)){
$list->balance = $back_data->result; // $list->balance = $back_data->result;
}else{ // }else{
$list->balance = "NULL"; // $list->balance = "NULL";
} // }
$list->balance = "NULL";
// print_r(json_encode($list)); // print_r(json_encode($list));
$this->load->view('common/header'); $this->load->view('common/header');
$this->load->view('homepage',$list); $this->load->view('homepage',$list);
@ -79,6 +80,7 @@ class pages extends CI_Controller{
$page = $this->input->get("page"); $page = $this->input->get("page");
$order = $this->input->get("order"); $order = $this->input->get("order");
$web_code = $this->input->get("web_code"); $web_code = $this->input->get("web_code");
$channel = $this->input->get("channel");
$where = "1=1";//搜索条件 $where = "1=1";//搜索条件
$page_parameter = "";//返回的分页条件参数 $page_parameter = "";//返回的分页条件参数
if(empty($page) or !is_numeric($page)){ if(empty($page) or !is_numeric($page)){
@ -94,6 +96,11 @@ class pages extends CI_Controller{
$where = "BIZ_ConfirmLineInfo.COLI_WebCode='{$web_code}'"; $where = "BIZ_ConfirmLineInfo.COLI_WebCode='{$web_code}'";
$page_parameter = "web_code=".$web_code; $page_parameter = "web_code=".$web_code;
} }
if (!empty($channel)){
$where = " InfoManager.dbo.trainsystem.ts_channel='{$channel}' ";
$page_parameter = " channel=".$channel;
}
//获取订单数据 //获取订单数据
$data = $this->train_system_model->get_order($page_size,$page,$where); $data = $this->train_system_model->get_order($page_size,$page,$where);
@ -238,11 +245,237 @@ class pages extends CI_Controller{
//账单导出页面 //账单导出页面
public function export(){ public function export(){
if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){ // if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/'); // redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
} // }
$this->load->view('header'); $this->load->view('header');
$this->load->view('export'); $this->load->view('export');
$this->load->view('footer'); $this->load->view('footer');
} }
//澜海账单导出页面
public function lanhaiExport(){
$this->load->view('header');
$this->load->view('export_lanhai');
$this->load->view('footer');
}
//预售时间列表
public function presale_list(){
$page_size = 10;
$page = $this->input->get("page");
$stationcn = $this->input->get("stationcn");
$web_code = $this->input->get("web_code");
$where = "1=1";//搜索条件
$page_parameter = "";//返回的分页条件参数
if(empty($page) or !is_numeric($page)){
$page=0;
}
if(!empty($stationcn)){
$where = " TST_station_cn like '%{$stationcn}%' ";
$list["stationcn"] = $stationcn;
$page_parameter = "stationcn=".$stationcn;
}
//获取订单数据
$data = $this->BIZ_train_model->get_presale_list($page_size,$page,$where);
// print_r(json_encode($data));die();
$list["data"]=$data->list;
$this->load->library('pagination');
$config['base_url'] = site_url("/apps/trainsystem/pages/presale_list?{$page_parameter}");
$config['total_rows'] = $data->count;
$config['per_page'] = $page_size;
$config['page_query_string']=TRUE;
$config['query_string_segment']="page";
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['first_tag_open']=$config['last_tag_open']=$config['next_tag_open']=$config['prev_tag_open']=$config['num_tag_open']="<li>";
$config['first_tag_close']=$config['lasbt_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="</li>";
$this->pagination->initialize($config);
$list["page_link"]=$this->pagination->create_links();
$this->load->view('header');
$this->load->view('presale_list',$list);
$this->load->view('footer');
}
//预售时间编辑
public function presale_edit(){
$ordernumber = $tstid=$this->input->get("tstid");
if(empty($tstid)){
exit('参数错误');
}
//根据ID号查询信息
$saletime_detail = $this->BIZ_train_model->get_saletime_detail($tstid);
$data["info"] = $saletime_detail;
$this->load->view('header');
$this->load->view('presale_edit',$data);
$this->load->view('footer');
}
//预售时间编辑保存
public function presale_editsave(){
$TST_id = $this->input->get_post("TST_id");
$TST_station_cn = trim($this->input->get_post("TST_station_cn"));
$TST_saletime = trim($this->input->get_post("TST_saletime"));
$TST_station_code = trim($this->input->get_post("TST_station_code"));
$data = new stdClass();
$data->TST_id = $TST_id;
$data->TST_station_cn = $TST_station_cn;
$data->TST_saletime = $TST_saletime;
$data->TST_station_code = $TST_station_code;
$this->BIZ_train_model->update_saletime($data);
$rUrl = '<script type="text/javascript">';
$rUrl.= 'alert("修改完成,请查看修改后的信息!!"); window.location.href="/info.php/apps/trainsystem/pages/presale_list";'; // 弹出提示框
//$rUrl.= 'window.location.href="/info.php/apps/trainsystem/pages/presale_edit?tstid='+$TST_id+'";'; // 跳转到目标页面
$rUrl.= '</script>';
echo $rUrl;
}
//澜海查询信息
public function lanhaiMsg(){
$order = $this->input->get_post("order"); //订单号
$type = $this->input->get_post("type"); //出票,退票,账单等类型
$microtime = get_microtime(); //时间戳
//生成接口请求头参数
$timestamp = $microtime;
$appId = LANHAI_appId;
if ($type == "orderticket"){
$url = LANHAI_URL."api/open/get/orderDetails";
}else if ($type == "returnticket"){
$url = LANHAI_URL."api/open/get/orderRefundDetails";
}
//拼接发送的报文
$PostData = new stdClass();
$PostData->mainOrderId = $order;
$PostData->timestamp = $timestamp;
$PostData->appId = $appId;
$ResponseJson = GetPost_http($url,json_encode($PostData),'json');
//log_message('error','澜海出票详细信息:'.$ResponseJson);
$ResponseData = json_decode($ResponseJson);
if (isset($ResponseData->data)){
// //需要解密
$this->load->library("aesLanhai");
$aesUnit = new Security();
$data = json_decode($aesUnit->decryptData($ResponseData->data));
$result = array();
$this->handle_array($data,$type,$result);
$formattedJson = json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo "<pre>$formattedJson</pre>";
}else{
$ResultNoticeResponse = new stdClass();
$ResultNoticeResponse->returnCode = -1;
$ResultNoticeResponse->success = false;
$ResultNoticeResponse->returnMsg = "找不到订单数据!";
$formattedJson = json_encode($ResultNoticeResponse, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $formattedJson;
}
}
//循环展示JSON
private function handle_array($arr,$type,&$array_to_fill){
foreach($arr as $key => $value){
if(is_array($value) || is_object($value)){
$array_to_fill[$key] = array();
$this->handle_array($value,$type, $array_to_fill[$key]);
}else{
if ($type=="orderticket"){ //出票特殊显示
if ($key == "passengerType"){
if ($value==0){
$value = "成人";
}else if($value == 1){
$value = "儿童";
}
}
if ($key == "certificateType"){
if ($value==1){
$value = "身份证";
}else if ($value == 2) {
$value = "护照";
}else if ($value == 7){
$value = "回乡证";
}else if ($value == 8 ){
$value = "台胞证";
}
}
if ($key == "status"){
switch ($value) {
case 0:
$value = "待出票";
break;
case 1:
$value = "锁定订单";
break;
case 2:
$value = "已出票";
break;
case 3:
$value = "超时订单";
break;
case 4:
$value = "已驳回";
break;
case 6:
$value = "出票超时";
break;
case 12:
$value = "锁单失败";
break;
default:
# code...
break;
}
}
}
$array_to_fill[$key] = $value;
}
}
}
public function presale_add(){
$this->load->view('header');
$this->load->view('presale_add');
$this->load->view('footer');
}
public function presale_addsave(){
$TST_station_cn = trim($this->input->get_post("TST_station_cn"));
$TST_saletime = trim($this->input->get_post("TST_saletime"));
$TST_station_code = trim($this->input->get_post("TST_station_code"));
$data = new stdClass();
$data->TST_station_cn = $TST_station_cn;
$data->TST_saletime = $TST_saletime;
$data->TST_station_code = $TST_station_code;
$this->BIZ_train_model->add_saletime($data);
$rUrl = '<script type="text/javascript">';
$rUrl.= 'alert("添加完成!!"); window.location.href="/info.php/apps/trainsystem/pages/presale_list";'; // 弹出提示框
$rUrl.= '</script>';
echo $rUrl;
}
} }

@ -59,6 +59,9 @@ class returnorders extends CI_Controller{
case 'ctrip': case 'ctrip':
$this->ctripModel($ticket_data,$passenger_data); $this->ctripModel($ticket_data,$passenger_data);
break; break;
case 'lanhai':
$this->lanhaiModel($ticket_data,$passenger_data);
break;
} }
} }
@ -185,6 +188,51 @@ class returnorders extends CI_Controller{
echo '{"reason":"退票失败","status":"404"}'; echo '{"reason":"退票失败","status":"404"}';
} }
} }
/**
* 澜海退票,这里只是提交退票提交。没有具体退票信息
*/
function lanhaiModel($ticket_data,$passenger_data){
$microtime = get_microtime();
//生成接口请求头参数
$dataId = $passenger_data->tst_id;
$mainOrderId = $passenger_data->tst_ordernumber;
$timestamp = $microtime;
$appId = LANHAI_appId;
$url = LANHAI_URL."api/open/refund/order";
//拼接发送的报文
$PostData = new stdClass();
$PostData->dataId = $dataId;
$PostData->mainOrderId = $mainOrderId;
$PostData->timestamp = $timestamp;
$PostData->appId = $appId;
// print_r(json_encode($PostData));
// die();
$ResponseJson = GetPost_http($url,json_encode($PostData),'json');
log_message('error','澜海退票请求返回信息:'.$ResponseJson);
$ResponseData = json_decode($ResponseJson);
// print_r($ResponseData);
// die();
//退票请求成功后执行支付
if($ResponseData->code == 0 && $ResponseData->success){
echo '{"reason":"退票提交成功","status":"200"}';
}else{
if (isset($ResponseData->msg)){
$errMsg = $ResponseData->msg;
}else{
$errMsg = "";
}
header("HTTP/1.1 404 Not Found");
echo '{"reason":"退票提交失败"'.$errMsg.',"status":"404"}';
}
}
//改签退票 //改签退票
public function returnreschedule(){ public function returnreschedule(){

@ -421,8 +421,4 @@ function pkcs5_unpad($text) {
?> ?>

@ -0,0 +1,51 @@
<?php
class aesLanhai{}
/**
* 使用旧的mcrypt来写澜海加解密类
*/
class Security {
private $key;
public function __construct() {
$CI =& get_instance();
$CI->load->config();
$this->key = LANHAI_KEY;
//$this->key = "999c1DtJJ4pEbcxeEqJBKw==";
}
public function encryptData($input) {
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$input = Security::pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $this->key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
private static function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
public function decryptData($sStr) {
$decrypted= mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
$this->key,
base64_decode($sStr),
MCRYPT_MODE_ECB
);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s-1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}
}

@ -23,6 +23,7 @@ class BIZ_train_model extends CI_Model {
,(case ISDATE(BPE_PassExpdate) ,(case ISDATE(BPE_PassExpdate)
when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120) when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120)
else null end) as BPE_PassExpdate else null end) as BPE_PassExpdate
,(select top 1 COI_Code from COuntryInfo where COI_SN=bbp.BPE_Nationality) as BPE_Nationality
FROM BIZ_BookPeople bbp FROM BIZ_BookPeople bbp
WHERE BPE_SN in(".$bpe_sn.") WHERE BPE_SN in(".$bpe_sn.")
"; ";
@ -55,6 +56,8 @@ class BIZ_train_model extends CI_Model {
,(case ISDATE(BPE_PassExpdate) ,(case ISDATE(BPE_PassExpdate)
when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120) when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120)
else null end) as BPE_PassExpdate else null end) as BPE_PassExpdate
,(select top 1 COI_Code from COuntryInfo where COI_SN=bbp.BPE_Nationality) as BPE_Nationality
,(select top 1 COI_ID from COuntryInfo where COI_SN=bbp.BPE_Nationality) as Nationality
FROM BIZ_BookPeople bbp FROM BIZ_BookPeople bbp
WHERE EXISTS( WHERE EXISTS(
SELECT TOP 1 1 SELECT TOP 1 1
@ -323,13 +326,104 @@ class BIZ_train_model extends CI_Model {
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
return $query->result(); return $query->result();
} }
//获取能够自动出票的订单列表2.0版本 20240130 zp (coli_state 11 我的订单 8 已收款 63 出票中 13 新订单(已支付))
function auto_check_ticket_2(){
$sql = "SELECT top 10 COLD_SN ,coli_id,COLD_SPFS,COLI_State,(SELECT TOP 1 GAI_Type FROM BIZ_GroupAccountInfo WHERE GAI_COLI_SN=bcli.COLI_SN AND ISNULL(DeleteFlag,0)=0) as GAI_Type
,cold_startdate
,isnull((select top 1 ts_autotimes from InfoManager.dbo.trainsystem where ts_cold_sn= bcld.cold_sn order by ts_id desc),0) as ts_autotimes
,(select top 1 ts_autolasttime from InfoManager.dbo.trainsystem where ts_cold_sn= bcld.cold_sn order by ts_id desc) as ts_autolasttime
FROM BIZ_ConfirmLineInfo bcli
inner join BIZ_ConfirmLineDetail bcld on COLD_COLI_SN=COLI_SN
INNER JOIN dbo.OperatorInfo ON OPI_SN=COLI_OPI_ID and OPI_DEI_SN=10 AND ISNULL(dbo.OperatorInfo.DeleteFlag,0)=0
WHERE bcli.COLI_ServiceType = '2'
AND bcli.COLI_State in ('13','63')
AND EXISTS(SELECT sum(GAI_SQJE) FROM BIZ_GroupAccountInfo WHERE GAI_COLI_SN=bcli.COLI_SN AND isnull(DeleteFlag,0) = 0 having (bcli.COLI_Price - Sum(GAI_SQJE)) <= 20 AND (Sum(GAI_SQJE) - bcli.COLI_Price) >= -20 )
AND isnull(bcli.DeleteFlag,0) = 0
AND isnull(bcld.DeleteFlag,0) = 0
AND COLD_SPFS < 2
AND ( NOT EXISTS (
SELECT TOP 1 1
FROM InfoManager.dbo.trainsystem
WHERE ts_cold_sn = COLD_SN
) or EXISTS(select Top 1 1 from InfoManager.dbo.trainsystem WHERE ts_cold_sn = COLD_SN
and (ts_status = '5' or ts_status='11')
and ts_cold_sn not in (select ts_cold_sn from InfoManager.dbo.trainsystem
where (ts_status='4' or ts_status='3' or ts_status='2' or ts_status='10') and ts_cold_sn = COLD_SN) ))
AND COLD_SN NOT IN ( select FOI_COLD_SN from BIZ_FlightsOrderInfo where FOI_COLD_SN=COLD_SN and FOI_TrainNetOrderNo>'')
and (COLD_StartDate between GETDATE() and CONVERT(varchar(100),GETDATE()+14,23)+' 23:59')
and isnull((select top 1 ts_autotimes from InfoManager.dbo.trainsystem where ts_cold_sn= bcld.cold_sn order by ts_id desc),0)<4
order by CONVERT(date,cold_startdate),ISNULL(CAST((select TOP 1 TST_saletime from TrainSaleTime where TST_station_cn = (
SELECT TOP 1 TRS_StationCN
FROM TrainStation
WHERE TRS_Code = (select top 1 DepartAirport from BIZ_FlightsOrderInfo where FOI_COLD_SN = cold_sn)
and ISNULL(TRS_StationCN,'')<>''
)) as Time),'18:00')
";
$query = $this->HT->query($sql);
return $query->result();
}
public function get_saletime($station){ public function get_saletime($station){
$sql = 'select TST_saletime from TrainSaleTime where TST_station_cn = ?'; $sql = 'select TST_saletime from TrainSaleTime where TST_station_cn = ?';
$query = $this->HT->query($sql,$station); $query = $this->HT->query($sql,$station);
return $query->row(); return $query->row();
} }
//预售时间列表
public function get_presale_list($pagesize=10,$page=0,$where="1=1"){
$data=new StdClass();
//获取总条数
$sql="SELECT COUNT(*) AS count FROM TrainSaleTime
WHERE
{$where}
";
$query = $this->HT->query($sql);
$count=$query->result();
$data->count=$count[0]->count;
$sql="SELECT TOP {$pagesize} TST_id,TST_station_cn,TST_station_code,TST_saletime,TST_updatetime from TrainSaleTime
WHERE
TST_id not in ( select top {$page} TST_id from TrainSaleTime where {$where} Order by isnull(TST_updatetime,0) desc,TST_id desc)
AND
{$where}
ORDER BY isnull(TST_updatetime,0) desc,TST_id desc ";
$query = $this->HT->query($sql);
$data->list=$query->result();
return $data;
}
//预售时间详细
public function get_saletime_detail($tstid){
$sql = 'select * from TrainSaleTime where TST_id = ?';
$query = $this->HT->query($sql,$tstid);
return $query->row();
}
//更新预售时间
public function update_saletime($data){
$sql = "update TrainSaleTime
set
TST_station_cn = '{$data->TST_station_cn}',
TST_saletime = '{$data->TST_saletime}',
TST_station_code = '{$data->TST_station_code}',
TST_updatetime = getdate()
where TST_id = '{$data->TST_id}' ";
$query = $this->HT->query($sql);
}
//添加预售时间
public function add_saletime($data){
$sql = " insert into TrainSaleTime (TST_station_cn,TST_saletime,TST_station_code,TST_updatetime)
values (?,?,?,getdate()) ";
$query = $this->HT->query($sql ,array($data->TST_station_cn,$data->TST_saletime,$data->TST_station_code));
}
//筛选符合发送邮件的订单 //筛选符合发送邮件的订单
public function auto_sendmail(){ public function auto_sendmail(){
$time = date('Y-m-d',time()); $time = date('Y-m-d',time());
@ -571,4 +665,32 @@ class BIZ_train_model extends CI_Model {
$sql = "delete from trainsystem where ts_id = '860'"; $sql = "delete from trainsystem where ts_id = '860'";
$query = $this->INFO->query($sql); $query = $this->INFO->query($sql);
} }
//添加澜海账单到汉特
function add_lanhai_bill($data){
//2.添加
$sql2 = "insert into BIZ_Platform_BookingInfo_XC (
XC_BillSN,XC_BillDate,XC_OrderID,XC_VEIName,XC_From,XC_BillType,XC_Cost,XC_Memo,XC_Creator,XC_CreateDate
) values (
'{$data->BillSn}',
'{$data->BillDate}',
'{$data->OrderId}',
'{$data->VEIName}',
'{$data->From}',
'{$data->BillType}',
'{$data->Cost}',
'{$data->Memo}',
'29',
getdate()
)";
$query = $this->HT->query($sql2);
}
//删除重复数据
function del_lanhai_bill($BillSn){
//1.删除数据 ,防止重复,根据 XC_BillSn
$sql = "delete from BIZ_Platform_BookingInfo_XC where XC_BillSn = '{$BillSn}' and XC_VEIName='9082253783' ";
$query=$this->HT->query($sql);
}
} }

@ -38,8 +38,10 @@ class train_system_model extends CI_Model {
InfoManager.dbo.trainsystem.ts_sendmail, InfoManager.dbo.trainsystem.ts_sendmail,
InfoManager.dbo.trainsystem.ts_m_sn, InfoManager.dbo.trainsystem.ts_m_sn,
InfoManager.dbo.trainsystem.ts_channel, InfoManager.dbo.trainsystem.ts_channel,
InfoManager.dbo.trainsystem.ts_autotimes,
BIZ_ConfirmLineInfo.COLI_ID, BIZ_ConfirmLineInfo.COLI_ID,
BIZ_ConfirmLineInfo.COLI_WebCode BIZ_ConfirmLineInfo.COLI_WebCode
,(select top 1 OPI2_Name from OperatorInfo2 where OPI2_OPI_SN = coli_opi_id and OPI2_LGC=2) as OPIName
FROM FROM
InfoManager.dbo.trainsystem InfoManager.dbo.trainsystem
LEFT JOIN LEFT JOIN
@ -61,7 +63,9 @@ class train_system_model extends CI_Model {
AND AND
{$where} {$where}
ORDER BY InfoManager.dbo.trainsystem.ts_subtime DESC"; ORDER BY InfoManager.dbo.trainsystem.ts_subtime DESC";
// echo($sql);
// die();
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
$data->list=$query->result(); $data->list=$query->result();
return $data; return $data;
@ -95,7 +99,10 @@ class train_system_model extends CI_Model {
ts_runtime, ts_runtime,
ts_checi, ts_checi,
ts_channel, ts_channel,
ts_isauto ts_isauto,
ts_autotimes,
ts_autolasttime,
ts_lanhaiData
) )
VALUES( VALUES(
'{$data->cold_sn}', '{$data->cold_sn}',
@ -114,7 +121,10 @@ class train_system_model extends CI_Model {
'{$data->runtime}', '{$data->runtime}',
'{$data->checi}', '{$data->checi}',
'{$data->channel}', '{$data->channel}',
'{$data->isauto}' '{$data->isauto}',
'{$data->ts_autotimes}',
getdate(),
'{$data->lanhaiData}'
) )
"; ";
//echo $sql; //echo $sql;
@ -122,7 +132,7 @@ class train_system_model extends CI_Model {
} }
public function ticketfrom($ts_ordernumber){ public function ticketfrom($ts_ordernumber){
$sql = "select ts_channel,ts_cold_sn,ts_ordernumber from trainsystem where ts_ordernumber = ?"; $sql = "select ts_channel,ts_cold_sn,ts_ordernumber,ts_lanhaiData from trainsystem where ts_ordernumber = ?";
$query = $this->INFO->query($sql,array($ts_ordernumber)); $query = $this->INFO->query($sql,array($ts_ordernumber));
return $query->row(); return $query->row();
} }
@ -146,7 +156,8 @@ class train_system_model extends CI_Model {
tst_seatstype = '{$data->seatype}', tst_seatstype = '{$data->seatype}',
tst_seatdetail = '{$data->seatdetail}', tst_seatdetail = '{$data->seatdetail}',
tst_status = '{$data->status}', tst_status = '{$data->status}',
tst_LongTrainNo = '{$data->longtrainno}' tst_LongTrainNo = '{$data->longtrainno}',
tst_lanhaiData = '{$data->lanhaiData}'
where where
tst_ordernumber = '{$data->ordernumber}' tst_ordernumber = '{$data->ordernumber}'
and and
@ -164,7 +175,8 @@ class train_system_model extends CI_Model {
tst_ticketprice, tst_ticketprice,
tst_seatstype, tst_seatstype,
tst_seatdetail, tst_seatdetail,
tst_LongTrainNo tst_LongTrainNo,
tst_lanhaiData
)VALUES( )VALUES(
'{$data->ordernumber}', '{$data->ordernumber}',
'{$data->status}', '{$data->status}',
@ -175,7 +187,8 @@ class train_system_model extends CI_Model {
'{$data->ticketprice}', '{$data->ticketprice}',
'{$data->seatype}', '{$data->seatype}',
'{$data->seatdetail}', '{$data->seatdetail}',
'{$data->longtrainno}' '{$data->longtrainno}',
'{$data->lanhaiData}'
) )
"; ";
$query =$this->INFO->query($sql); $query =$this->INFO->query($sql);
@ -233,6 +246,11 @@ class train_system_model extends CI_Model {
$where .= "ts_reschedulecallback = '{$data->reschedulecallback}',"; $where .= "ts_reschedulecallback = '{$data->reschedulecallback}',";
} }
if (!empty($data->addOrderData)) {
//失败了保存提交的订单数据
$where .= " ts_addOrderData = '{$data->addOrderData}',";
}
$sql =" $sql ="
update trainsystem update trainsystem
set set
@ -246,6 +264,7 @@ class train_system_model extends CI_Model {
$query = $this->INFO->query($sql); $query = $this->INFO->query($sql);
} }
//更新乘客表信息 //更新乘客表信息
public function update_passpager_info($data){ public function update_passpager_info($data){
@ -282,6 +301,23 @@ class train_system_model extends CI_Model {
$query = $this->INFO->query($sql); $query = $this->INFO->query($sql);
} }
/**
* 更新退票后的乘客信息澜海退票返回乘客的ID其它信息没有。
*/
public function return_update_passager_lanhai($data){
$sql = "update
trainsystem_tickets
set
tst_status = '{$data->status}',
tst_returncallback = '{$data->returncallback}',
tst_lasteditdate = getdate()
where
tst_id = '{$data->tst_id}'
";
$query = $this->INFO->query($sql);
}
//获取订单出票状态 //获取订单出票状态
public function get_tickets_info($cold_sn){ public function get_tickets_info($cold_sn){
$sql = "select top 1 ts_status,ts_ordernumber,ts_elecnumber,ts_seatsinfo from trainsystem where ts_cold_sn = ? and ts_status in ('4','7') order by ts_subtime desc"; $sql = "select top 1 ts_status,ts_ordernumber,ts_elecnumber,ts_seatsinfo from trainsystem where ts_cold_sn = ? and ts_status in ('4','7') order by ts_subtime desc";
@ -327,4 +363,43 @@ class train_system_model extends CI_Model {
return false; return false;
} }
} }
//获取出票次数,不管是自动还是手动。
public function get_autotimes($cold_sn){
$sql = "select COUNT(*) as countauto from InfoManager.dbo.trainsystem where ts_cold_sn = ? and ts_status=5";
$query = $this->INFO->query($sql, $cold_sn);
return $query->row();
}
/**
* 根据客人ID获取客人信息及出票信息
*/
public function get_passenger_byId($tst_id){
$sql = "select top 1 * from trainsystem_tickets inner join trainsystem on tst_ordernumber=ts_ordernumber and tst_id = ?";
$query = $this->INFO->query($sql,array($tst_id));
return $query->row();
}
//根据订单号获取外联名称
public function get_OPIName($orderNumber){
$sql = "select top 1
(SELECT TOP 1 OPI2_Name
FROM OperatorInfo2
WHERE OPI2_OPI_SN = coli_opi_id
AND OPI2_LGC = 2
) AS OPIName,
(select top 1 Gri_No from GRoupInfo where GRI_SN=BIZ_ConfirmLineInfo.COLI_GRI_SN) as griName
FROM InfoManager.dbo.trainsystem
INNER JOIN BIZ_ConfirmLineInfo ON BIZ_ConfirmLineInfo.COLI_SN = (
SELECT COLD_COLI_SN
FROM BIZ_ConfirmLineDetail
WHERE COLD_SN = InfoManager.dbo.trainsystem.ts_cold_sn
)
where ts_ordernumber=?
";
$query = $this->HT->query($sql,array($orderNumber));
return $query->row();
}
} }

@ -5,8 +5,8 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
<form style="width: 80%;" action="http://www.mycht.cn/info.php/apps/trainsystem/api/export_excel/" method="post"> <form style="width: 80%;" action="http://www.mycht.cn/info.php/apps/trainsystem/api/export_excel/" method="post">
<input type="text" name="from_date" class="date" value="<?php echo empty($from_date)?"":$from_date;?>" autocomplete="off"> <input type="text" name="from_date" class="date" value="<?php echo empty($from_date)?"":$from_date;?>" autocomplete="off" placeholder="开始日期">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="to_date" class="date" value="<?php echo empty($to_date)?"":$to_date;?>" autocomplete="off"> <input type="text" name="to_date" class="date" value="<?php echo empty($to_date)?"":$to_date;?>" autocomplete="off" placeholder="结束日期">
审核状态:<input type="checkbox" <?php echo empty($examine)?"":"checked";?> name="examine" />&nbsp;&nbsp;&nbsp; 审核状态:<input type="checkbox" <?php echo empty($examine)?"":"checked";?> name="examine" />&nbsp;&nbsp;&nbsp;
<button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> Download</button> <button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> Download</button>
</form> </form>

@ -0,0 +1,81 @@
<div style="width:90%;margin:30px auto;">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">交易记录导出&nbsp;<a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/index/ht_order_list');?>">订单列表>></a> </h3>
</div>
<div class="panel-body">
<form style="width: 80%;" action="/info.php/apps/trainsystem/api/lanhai_export_excel/" method="post">
<input type="text" name="from_date" class="date" value="<?php echo empty($from_date)?"":$from_date;?>" autocomplete="off" placeholder="开始日期">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="to_date" class="date" value="<?php echo empty($to_date)?"":$to_date;?>" autocomplete="off" placeholder="结束日期">
显示列表:<input type="checkbox" <?php echo empty($examine)?"":"checked";?> name="examine" />&nbsp;&nbsp;|&nbsp;&nbsp;
导入汉特:<input type="checkbox" <?php echo empty($importht)?"":"checked";?> name="importht" />&nbsp; <a href="javascript:void(0);" title="勾选此项后,会以开始时间和结束时间为编码把数据导入汉特。&#10 注意:为了防止重复 请不要有同一时间段的导入。比如8月1日到30日导入然后8月1日到29日又导入一次。"><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>&nbsp;&nbsp;&nbsp;
<button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> Download</button>
&nbsp;<a href="javascript:void(0);" title="什么都不选点击此按钮下载EXCEL账单选择显示列表就只显示数据。&#10 选择导入汉特后会单独另外进行一个导入的操作。"><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>
</form>
<p style="margin: 0 0 10px; width: 200px; float: left; line-height: 30px;">
<!-- <table class="table table-hover" >
<thead>
<tr><th>时间</th><th>信息</th><th>变化值</th><th>团名</th><th>外联</th></tr>
</thead>
<tbody>
<tr data-id="161130252" title="Popover title" data-container="body" data-toggle="popover" data-placement="top" data-content="顶部的 Popover 中的一些内容">
<td>2016-12-01 11:18:28</td>
<td> 票款(有充值)</td>
<td>-1106.00</td>
<td>R161228-BYW161130252</td>
<td>李毅文</td>
</tr>
</tbody>
</table> -->
<div class="row <?php echo empty($examine)?"hidden":"";?>" style="width:90%;margin:0 auto;">
<div class="">
<table class="table table-hover" id="list_table">
<thead>
<tr><th>日期</th><th>类型</th><th>金额</th><th>订单号</th><th>外联</th><th>团号</th><th>乘客</th></tr>
</thead>
<tbody>
<?php $total=0; $count=0; foreach ($data as $key => $value) {?>
<tr data-id="<?php echo $value["mainOrderId"];?>" title="Popover title" data-container="body" data-toggle="popover" data-placement="top" data-content="顶部的 Popover 中的一些内容">
<td><?php echo $value["saveDay"];?></td><td><?php echo $value["type"];?></td><td><?php echo $value["price"];?></td><td><?php echo $value["mainOrderId"];?></td>
<td><?php echo $value["wl"];?></td><td><?php echo $value["griName"];?></td><td><?php echo $value["passengerName"];?></td>
</tr>
<?php $total += $value["price"]; $count+=1; }?>
<tr><td colspan="2">总额:</td><td colspan="2"><?php echo($total) ?></td><td>记录数:</td><td colspan="2"><?php echo($count) ?></td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="popover fade top in" role="tooltip" id="popover" style="width:auto;max-width: 100% !important;top: 139.6px; left: 50%; display: none;">
<div class="arrow"></div>
<h3 class="popover-title">我的支付</h3>
<div class="popover-content">
<table class="table" id="my_pay_data">
<thead>
<tr>
<td>序号</td><td>车次</td><td>出发日期</td><td>价格</td><td>备注</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<script>
$(function(){
$(".date").datepicker({
'dateFormat': 'yy-mm-dd',
'autoclose': true
});
})
</script>

@ -77,7 +77,8 @@ function selseat(seat){
<div style="width:90%;margin:30px auto;"> <div style="width:90%;margin:30px auto;">
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">翰特订单号&nbsp;<a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/reschedule');?>">携程改签>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/export');?>">导出交易记录>></a> <span style="margin-left:200px;">版本V2.0</span><span class="pull-right">聚合余额(RMB)<?php echo $balance;?></span></h3> <h3 class="panel-title">翰特订单号&nbsp;<a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/presale_list');?>">预售时间维护>></a> <a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/lanhaiExport');?>">澜海导出账单>></a><span style="margin-left:200px;">版本V2.0</span><!--<span class="pull-right">聚合余额(RMB)<?php echo $balance;?></span> --></h3>
<!-- <a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/reschedule');?>">携程改签>></a> -->
</div> </div>
<div class="panel-body"> <div class="panel-body">
<form style="width: 300px;float: left;" action="/info.php/apps/trainsystem/pages/index/" method="post"> <form style="width: 300px;float: left;" action="/info.php/apps/trainsystem/pages/index/" method="post">
@ -137,6 +138,7 @@ function selseat(seat){
<th style="text-align:center;">年龄类型</th> <th style="text-align:center;">年龄类型</th>
<th style="text-align:center;">出生年月</th> <th style="text-align:center;">出生年月</th>
<th style="text-align:center;">证件有效期</th> <th style="text-align:center;">证件有效期</th>
<th style="text-align:center;">国籍</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -153,6 +155,7 @@ function selseat(seat){
<td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td> <td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td>
<td><?php echo $p->BPE_BirthDate;?></td> <td><?php echo $p->BPE_BirthDate;?></td>
<td><?php echo $p->BPE_PassExpdate;?></td> <td><?php echo $p->BPE_PassExpdate;?></td>
<td><?php echo $p->Nationality . "(".$p->BPE_Nationality .")"; ?></td>
</tr> </tr>
<?php endforeach;?> <?php endforeach;?>
<tr style="text-align:;"> <tr style="text-align:;">
@ -296,7 +299,7 @@ function selseat(seat){
</tr> </tr>
<tr style="text-align:;"> <tr style="text-align:;">
<td> <td>
<button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train->FOI_COLD_SN;?>">聚合订票</button> <button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train->FOI_COLD_SN;?>">澜海订票</button>
</td> </td>
<td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span> <td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span>
</td> </td>
@ -408,7 +411,7 @@ function selseat(seat){
var cold_sn = $(this).attr('data-order'); var cold_sn = $(this).attr('data-order');
var istanding = $('input[name="istanding_'+cold_sn+'"]').is(':checked'); var istanding = $('input[name="istanding_'+cold_sn+'"]').is(':checked');
url2+=$(this).attr("data-order")+"&people="+people_sn+"&selectseat="+selectseat+"&type=juhe&istanding="+istanding; url2+=$(this).attr("data-order")+"&people="+people_sn+"&selectseat="+selectseat+"&type=lanhai&istanding="+istanding;
var THIS=$(this); var THIS=$(this);
THIS.parent().parent().find(".back_mes").html(" ");//清空提示 THIS.parent().parent().find(".back_mes").html(" ");//清空提示
@ -420,7 +423,7 @@ function selseat(seat){
}, },
success:function(data){ success:function(data){
THIS.removeAttr("disabled"); THIS.removeAttr("disabled");
THIS.html("聚合订票"); THIS.html("澜海订票");
var str = "<a href='http://www.mycht.cn/info.php/apps/trainsystem/pages/order?order="+data.order+"' target='_blank'>"+data.mes+"</a>"; var str = "<a href='http://www.mycht.cn/info.php/apps/trainsystem/pages/order?order="+data.order+"' target='_blank'>"+data.mes+"</a>";
THIS.parent().parent().find(".back_mes").html(str); THIS.parent().parent().find(".back_mes").html(str);

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>c21</Author>
<LastAuthor>c21</LastAuthor>
<Created>2024-08-07T01:21:46Z</Created>
<LastSaved>2024-08-07T01:38:10Z</LastSaved>
<Version>1.00</Version>
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>9630</WindowHeight>
<WindowWidth>21555</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>90</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Center"/>
<Borders/>
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="m58993952">
<Alignment ss:Horizontal="Right" ss:Vertical="Center" ss:WrapText="1"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Font ss:FontName="微软雅黑" x:CharSet="134" x:Family="Swiss" ss:Size="11"
ss:Color="#000000"/>
</Style>
<Style ss:ID="m58993972">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Font ss:FontName="微软雅黑" x:CharSet="134" x:Family="Swiss" ss:Size="20"
ss:Color="#000000" ss:Bold="1"/>
</Style>
<Style ss:ID="m58993992">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Font ss:FontName="微软雅黑" x:CharSet="134" x:Family="Swiss" ss:Size="11"
ss:Color="#000000"/>
</Style>
<Style ss:ID="s78">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Font ss:FontName="微软雅黑" x:CharSet="134" x:Family="Swiss" ss:Color="#000000"/>
</Style>
<Style ss:ID="s79">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Font ss:FontName="微软雅黑" x:CharSet="134" x:Family="Swiss" ss:Color="#000000"/>
<NumberFormat ss:Format="General Date"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<?php $num=count($arr);?>
<Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="<?php echo $num+7;?>" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
<Column ss:AutoFitWidth="0" ss:Width="115.5"/>
<Column ss:AutoFitWidth="0" ss:Width="111"/>
<Column ss:AutoFitWidth="0" ss:Width="111"/>
<Column ss:AutoFitWidth="0" ss:Width="100.5"/>
<Column ss:AutoFitWidth="0" ss:Width="62.25"/>
<Column ss:AutoFitWidth="0" ss:Width="100.5"/>
<Column ss:AutoFitWidth="0" ss:Width="203.25"/>
<Row ss:AutoFitHeight="0">
<Cell ss:MergeAcross="6" ss:MergeDown="1" ss:StyleID="m58993952"><Data
ss:Type="String">三亚澜海商旅服务有限公司&#10;地址海南省三亚市崖州区崖州湾科技城雅布伦产业园5号楼3楼310室&#10;开户银行:三亚惠民村镇银行&#10;银行账号2019 0379 3100 12&#10;</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="99.75"/>
<Row ss:AutoFitHeight="0" ss:Height="42">
<Cell ss:MergeAcross="6" ss:StyleID="m58993972"><Data ss:Type="String">桂林海纳国际旅行社有限公司火车票对账文件</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="16.5">
<Cell ss:StyleID="s78"><Data ss:Type="String">账单日期</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">账单类型</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">结算金额</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">订单号</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">外联</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">团号</Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String">乘客</Data></Cell>
</Row>
<?php for($i=$num-1;$i>=0;$i--){?>
<Row ss:AutoFitHeight="0" ss:Height="16.5">
<Cell ss:StyleID="s79"><Data ss:Type="String"><?php echo $arr[$i]["saveDay"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["type"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["price"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["mainOrderId"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["wl"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["griName"];?></Data></Cell>
<Cell ss:StyleID="s78"><Data ss:Type="String"><?php echo $arr[$i]["passengerName"];?></Data></Cell>
</Row>
<?php }?>
<Row ss:AutoFitHeight="0" ss:Height="36">
<Cell ss:MergeAcross="6" ss:StyleID="m58993992"><Data ss:Type="String"></Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Unsynced/>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>4</ActiveRow>
<ActiveCol>4</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet2">
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
<Row ss:AutoFitHeight="0"/>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Unsynced/>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet3">
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
<Row ss:AutoFitHeight="0"/>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Unsynced/>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>

@ -24,7 +24,7 @@
<p style="text-align:center;"><a href="refund?order=<?php echo $ordernumber?>" style="padding:5px 15px;" class="btn btn-warning btn-sm">查看详情 <span class="glyphicon glyphicon-forward"></span></a></p> <p style="text-align:center;"><a href="refund?order=<?php echo $ordernumber?>" style="padding:5px 15px;" class="btn btn-warning btn-sm">查看详情 <span class="glyphicon glyphicon-forward"></span></a></p>
<?php endif;?> <?php endif;?>
<?php if((int)$status === 7):?> <?php if((int)$status === 7 || (int)$status==8):?>
<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p> <p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>
<p><?php echo $msg;?></p> <p><?php echo $msg;?></p>
<p style="text-align:center;"><a href="refund?order=<?php echo $ordernumber?>" style="padding:5px 15px;" class="btn btn-warning btn-sm">查看详情 <span class="glyphicon glyphicon-forward"></span></a></p> <p style="text-align:center;"><a href="refund?order=<?php echo $ordernumber?>" style="padding:5px 15px;" class="btn btn-warning btn-sm">查看详情 <span class="glyphicon glyphicon-forward"></span></a></p>
@ -38,6 +38,13 @@
<?php else:?> <?php else:?>
<p><?php echo $msg;?></p> <p><?php echo $msg;?></p>
<?php endif;?> <?php endif;?>
<?php if ($channel == "lanhai"){ ?>
<p style="text-align:center;"><a href="lanhaiMsg?order=<?php echo $ordernumber?>&type=orderticket" style="padding:5px 15px;" class="btn btn-warning btn-sm" target="_blank">出票详细信息 <span class="glyphicon glyphicon-forward"></span></a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="lanhaiMsg?order=<?php echo $ordernumber?>&type=returnticket" style="padding:5px 15px;" class="btn btn-warning btn-sm" target="_blank">退票详细信息 <span class="glyphicon glyphicon-forward"></span></a>
</p>
<?php } ?>
</div> </div>
</div> </div>
</div> </div>

@ -20,6 +20,13 @@
<option value="train_vc">法国</option> <option value="train_vc">法国</option>
</select> </select>
</div> </div>
<div class="col-md-2">
<select class="form-control" name="channel">
<option value ="" disabled="disabled" selected>渠道</option>
<option value ="ctrip">携程</option>
<option value ="lanhai">澜海</option>
</select>
</div>
<!--<div class="col-md-5"> <!--<div class="col-md-5">
<input type="text" name="from_date" class="date" value="" class=""> <input type="text" name="from_date" class="date" value="" class="">
@ -47,12 +54,13 @@
<th style="text-align:center;">出发</th> <th style="text-align:center;">出发</th>
<th style="text-align:center;">到达</th> <th style="text-align:center;">到达</th>
<th style="text-align:center;">状态</th> <th style="text-align:center;">状态</th>
<th style="text-align:center;">价格</th> <th style="text-align:center;">外联</th>
<th style="text-align:center;">提交时间</th> <th style="text-align:center;">提交时间</th>
<th style="text-align:center;">所属部门</th> <th style="text-align:center;">所属部门</th>
<th style="text-align:center;">渠道</th> <th style="text-align:center;">渠道</th>
<th style="text-align:center;">出票方式</th> <th style="text-align:center;">出票方式</th>
<th style="text-align:center;">是否发送邮件</th> <th style="text-align:center;">出票次数</th>
<th style="text-align:center;">发送邮件</th>
<th style="text-align:center;">反馈</th> <th style="text-align:center;">反馈</th>
<th style="text-align:center;">操作</th> <th style="text-align:center;">操作</th>
</tr> </tr>
@ -67,7 +75,7 @@
<td><?php echo $v->ts_fromstationame;?></td> <td><?php echo $v->ts_fromstationame;?></td>
<td><?php echo $v->ts_tostationame;?></td> <td><?php echo $v->ts_tostationame;?></td>
<td><?php echo $v->info;?></td> <td><?php echo $v->info;?></td>
<td><?php echo $v->ts_orderamount;?></td> <td><?php echo $v->OPIName;?></td>
<td><?php echo $v->ts_subtime;?></td> <td><?php echo $v->ts_subtime;?></td>
<td><?php echo $v->COLI_WebCode;?></td> <td><?php echo $v->COLI_WebCode;?></td>
<td><?php echo $v->ts_channel;?></td> <td><?php echo $v->ts_channel;?></td>
@ -82,6 +90,7 @@
echo '<td>复查</td>'; echo '<td>复查</td>';
} }
?> ?>
<td><?php echo $v->ts_autotimes;?></td>
<?php <?php
if($v->ts_sendmail == 1){ if($v->ts_sendmail == 1){
if($v->ts_m_sn){ if($v->ts_m_sn){

@ -0,0 +1,30 @@
<div style="width:90%;margin:30px auto;">
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
<div class="panel-heading">
<h3 class="panel-title">预售时间添加(车站名是中文名)</h3>
</div>
<div class="panel-body">
<form action="/info.php/apps/trainsystem/pages/presale_addsave" name="saletimeform" method="POST">
<table class="table table-condensed table-bordered">
<tr>
<td style="text-align:center;">车站名</td>
<td><input type="text" name="TST_station_cn" value="" /></td>
</tr>
<tr>
<td style="text-align:center;">预售时间8:00 ,18:30)</td>
<td><input type="text" name="TST_saletime" value="" /></td>
</tr>
<tr>
<td style="text-align:center;">车站编码</td>
<td><input type="text" name="TST_station_code" value="" /></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" class="btn btn-warning btn-sm" value="添 加" style="width:120px;" />
</td>
</tr>
</table>
</form>
</div>
</div>
</div>

@ -0,0 +1,31 @@
<div style="width:90%;margin:30px auto;">
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
<div class="panel-heading">
<h3 class="panel-title">预售时间修改(车站名尽量不要修改)</h3>
</div>
<div class="panel-body">
<form action="/info.php/apps/trainsystem/pages/presale_editsave" name="saletimeform" method="POST">
<table class="table table-condensed table-bordered">
<tr>
<td style="text-align:center;">车站名</td>
<td><input type="text" name="TST_station_cn" value="<?php echo($info->TST_station_cn) ?>" /></td>
</tr>
<tr>
<td style="text-align:center;">预售时间</td>
<td><input type="text" name="TST_saletime" value="<?php echo($info->TST_saletime) ?>" /></td>
</tr>
<tr>
<td style="text-align:center;">车站编码</td>
<td><input type="text" name="TST_station_code" value="<?php echo($info->TST_station_code) ?>" /></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" class="btn btn-warning btn-sm" value="更 新" style="width:120px;" />
<input type="hidden" name="TST_id" value="<?php echo($info->TST_id) ?>"" />
</td>
</tr>
</table>
</form>
</div>
</div>
</div>

@ -0,0 +1,54 @@
<div style="width:90%;margin:30px auto;">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">预售时间搜索</h3>
</div>
<div class="panel-body">
<div class="row">
<form style="" action="" method="get">
<div class="col-md-6">
<input class="form-control" type="text" placeholder="站点中文名(和汉特的保持一致)" name="stationcn" value="<?php echo !empty($stationcn)?"$stationcn":"";?>" autocomplete="off">
</div>
<div class="col-md-5">
<button type="submit" id="sub" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-search"></span> 搜索</button>
&nbsp;&nbsp;<a href="/info.php/apps/trainsystem/pages/presale_add" class="btn btn-warning " style="width: 120px;">新增站点</a>
</div>
</form>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">预售时间列表</h3>
</div>
<div class="panel-body">
<table class="table table-striped" style="text-align:center;">
<thead>
<tr>
<th style="text-align:center;" width="5%">序号</th>
<th style="text-align:center;" width="5%">ID</th>
<th style="text-align:center;" width="25%">车站</th>
<th style="text-align:center;" width="25%">预售时间</th>
<th style="text-align:center;" width="15%">车站编码</th>
<th style="text-align:center;" width="15%">更新时间</th>
<th style="text-align:center;">操作</th>
</tr>
</thead>
<tbody>
<?php $num=0; foreach($data as $v):?>
<tr>
<td><?php echo ++$num;?></td>
<td><?php echo $v->TST_id;?></td>
<td><?php echo $v->TST_station_cn;?></td>
<td><?php echo $v->TST_saletime;?></td>
<td><?php echo $v->TST_station_code;?></td>
<td><?php echo $v->TST_updatetime;?></td>
<td><a target="_blank" href="presale_edit?tstid=<?php echo $v->TST_id;?>">修改</a></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<div style="text-align:right;"><ul class="pagination"><?php echo $page_link;?></ul></div>
</div>
</div>
</div>

@ -8,8 +8,20 @@
foreach ($passengers as $items){ foreach ($passengers as $items){
echo '<p>'.$from_station_name.'<span class="glyphicon glyphicon-arrow-right"></span>'.$to_station_name.'</p>'; echo '<p>'.$from_station_name.'<span class="glyphicon glyphicon-arrow-right"></span>'.$to_station_name.'</p>';
echo '<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>'; echo '<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>';
echo '<p>'.$items->tst_realname.'('.$items->tst_ticketype.')&nbsp;&nbsp;&nbsp;&nbsp;'.$items->tst_seatstype.'&nbsp;&nbsp;'.$items->tst_seatdetail.'&nbsp;&nbsp;&nbsp;&nbsp;票价:¥'.$items->tst_ticketprice.'</p>'; echo '<p>ID:'.$items->tst_id.''.$items->tst_realname.'('.$items->tst_ticketype.')&nbsp;&nbsp;&nbsp;&nbsp;'.$items->tst_seatstype.'&nbsp;&nbsp;'.$items->tst_seatdetail.'&nbsp;&nbsp;&nbsp;&nbsp;票价:¥'.$items->tst_ticketprice.'</p>';
if((int)$items->tst_status == 4){ if ((int)$items->tst_status==7){//退票成功
echo '&nbsp;&nbsp;&nbsp;&nbsp;<p>退票成功</p>';
}else if ((int)$items->tst_status==8){
$errMsg = "";
if (!empty($items->tst_returncallback)){
$returnCallBack = json_decode($items->tst_returncallback);
if (isset($returnCallBack->failReason)){
$errMsg = $returnCallBack->failReason;
}
}
echo '&nbsp;&nbsp;&nbsp;&nbsp;<p>退票失败:'.$errMsg.'</p>';
}
if((int)$items->tst_status == 4 || (int)$items->tst_status==8){
echo '<p>'; echo '<p>';
echo '<a href="###" style="padding:5px 15px;" class="btn btn-warning btn-sm returnticket" name="'.$items->tst_realname.'" passid="'.$items->tst_numberid.'"><span class="glyphicon glyphicon-remove"></span>退票</a>'; echo '<a href="###" style="padding:5px 15px;" class="btn btn-warning btn-sm returnticket" name="'.$items->tst_realname.'" passid="'.$items->tst_numberid.'"><span class="glyphicon glyphicon-remove"></span>退票</a>';
echo '</p>'; echo '</p>';
@ -41,12 +53,12 @@ $(function(){
url:url, url:url,
success:function(json){ success:function(json){
alert('请求成功,正在处理退票...'); alert('请求成功,正在处理退票...');
return_ticket.html('退票成功'); return_ticket.html('退票提交成功');
}, },
error:function(json){ error:function(json){
alert('请求失败,请重新请求,如果还有错误请联系管理员'); alert('请求失败,请重新请求,如果还有错误请联系管理员');
return_ticket.html('退票失败'); return_ticket.html('退票提交失败');
} }
}); });
}); });

@ -0,0 +1,117 @@
/*携程出票发送信息*/
{
"train": {
"FOI_SN": 421000463,
"DepartureCity": "Guilin",
"ArrivalCity": "Guilin Bei (North)",
"FOI_COLD_SN": 586000781,
"DepartAirport": "GLZ",
"ArrivalAirport": "GBZ",
"FlightsNo": "G2910",
"Aircraft": "O",
"Cabin": "2nd Class Seat",
"DepartureDate": "2023-04-15 00:00:00",
"FOI_SelectedSeat": "1A,1B,1C",
"DepartAirport_cn": "\u6842\u6797",
"ArrivalAirport_cn": "\u6842\u6797\u5317",
"FOI_TrainNetOrderNo": null,
"adultcost": 6,
"childcost": 3,
"adultprice": 7,
"childprice": 7,
"ArrivalTime": "08:28AM Apr.15, 2023",
"DepartureTime": "08:18AM Apr.15, 2023",
"FOI_SaleDate": null
},
"people_list": [{
"BPE_SN": 571000773,
"BPE_FirstName": "",
"BPE_MiddleName": null,
"BPE_LastName": "AAA",
"BPE_GuestType": 1,
"BPE_Passport": "111",
"BPE_PassportType": "Passport No.",
"BPE_SEX": 100001,
"BPE_BirthDate": "1957-03-04",
"BPE_PassExpdate": "2023-04-14"
}, {
"BPE_SN": 571000774,
"BPE_FirstName": "",
"BPE_MiddleName": null,
"BPE_LastName": "BBB",
"BPE_GuestType": 1,
"BPE_Passport": "2222",
"BPE_PassportType": "Passport No.",
"BPE_SEX": 100001,
"BPE_BirthDate": "2005-03-29",
"BPE_PassExpdate": "2025-04-08"
}, {
"BPE_SN": 571000775,
"BPE_FirstName": "",
"BPE_MiddleName": null,
"BPE_LastName": "CCCC",
"BPE_GuestType": 1,
"BPE_Passport": "33333",
"BPE_PassportType": "Passport No.",
"BPE_SEX": 100003,
"BPE_BirthDate": "2007-04-23",
"BPE_PassExpdate": "2030-04-16"
}
],
"email": "vivi@hainatravel.com"
}
/*订单信息*/
{
"wl": [
{
"Name": "Vivi Chen",
"OPI_Name": "陈媛明",
"OPI_Email": "vivi@chinahighlights.com",
"tel": "86-0773-2823567",
"Mobile": "86-18877331805",
"Email": "vivi@chinahighlights.com"
}
],
"info": [
{
"people": [
{
"BPE_SN": 559006230,
"BPE_FirstName": "",
"BPE_MiddleName": null,
"BPE_LastName": "ZHANG HAIHUA",
"BPE_GuestType": 1,
"BPE_Passport": "G41163238",
"BPE_PassportType": "Passport No."
}
],
"train": {
"FOI_SN": 409004469,
"DepartureCity": "Beijing Nan (South)",
"ArrivalCity": "Yiwu",
"FOI_COLD_SN": 574005898,
"DepartAirport": "VNP",
"ArrivalAirport": "YWH",
"FlightsNo": "G191",
"Aircraft": "M",
"Cabin": "1st Class Seat",
"DepartureDate": "2021-10-26 00:00:00",
"FOI_SelectedSeat": "1F",
"DepartAirport_cn": "北京南",
"ArrivalAirport_cn": "义乌",
"FOI_TrainNetOrderNo": null,
"adultcost": 1061.5,
"childcost": 530.75,
"adultprice": 179,
"childprice": 93,
"ArrivalTime": "22:14 Oct.26, 2021",
"DepartureTime": "15:18 Oct.26, 2021",
"FOI_SaleDate": null
},
"status": true
}
],
"cols_id": "2110265554",
"balance": "NULL"
}

@ -0,0 +1,396 @@
//订单提交JSON结构
{
"authentication": {
"timeStamp": "2023-04-14 16:15:39",
"serviceName": "train.addTrainOrder",
"companyId": "1503141150",
"messageIdentity": "1f71fab781f73caea6686c8a69600732"
},
"trainOrderInfo": {
"companyId": "1503141150",
"orderType": 2,
"orderTicketType": 0,
"companyOrderId": "HN1681460139569",
"isReservationOrder": null,
"leakCutOffTime": null,
"orderInfo": {
"orderTime": "2023-04-14 16:15:39",
"ticketList": [{
"fromStationName": "桂林",
"toStationName": "桂林北",
"ticketTime": "2023-04-29 08:18",
"trainNo": "G2910",
"allAcceptTrainNo": "",
"acceptDepartDates": "",
"arrivalDateTime": "2023-04-29 08:28",
"ticketPrice": 6,
"seatName": "二等座",
"selectedSeat": "1A",
"acceptSeat": "",
"passengerList": [{
"passengerType": 1,
"certificateType": 1,
"certificateNo": "oiHef47aYwngLzVN2iiBtTS80fvlfpc8",
"certificateName": "赵鹏",
"birthday": null,
"realName": "赵鹏",
"identityLimitDate": null,
"countryCode": "",
"contactMobile": "",
"contactEmail": ""
}
]
}
],
"frontSeatFlag": 0,
"orderRemark": ""
},
"contactUser": {
"contactUserId": "",
"contactName": "vivi",
"companyId": "1503141150",
"countryCode": "86",
"contactMobile": "up3E0hBuzNbADKxufANHMg=="
},
"extraService": {
"noVerifyFlag": 1,
"lowerBerthFlag": 0,
"lowerBerthCount": 0,
"grabTicketRate": 1
}
}
}
//订单提交成功返回数据
{
"returnCode": 1,
"returnMessage": "SUCCESS",
"returnData": {
"serviceName": "train.addTrainOrder",
"companyId": "1503141150",
"companyOrderId": "HN1681460139569",
"operationDateTime": "2023-04-14 16:15:56",
"orderPayDetail": {
"orderAmount": 12.00,
"ticketAmount": 6,
"serveAmount": 0,
"extraServeFees": [
{
"feeAmount": 6.00,
"feeType": 141
}
]
}
},
"ResponseStatus": {
"Timestamp": "/Date(1681460156763+0800)/",
"Ack": "Success",
"Errors": [],
"Build": null,
"Version": null,
"Extension": [
{
"Id": "CLOGGING_TRACE_ID",
"Version": null,
"ContentType": null,
"Value": "7715658886832531034"
},
{
"Id": "RootMessageId",
"Version": null,
"ContentType": null,
"Value": "100031671-0a6d18d7-467072-1571193"
}
]
}
}
//支付成功
{
"returnCode": 1,
"returnMessage": "pay success",
"returnData": {
"serviceName": "train.companyPayOrder",
"companyId": "1503141150",
"companyOrderId": "HN1681700111527",
"operationDateTime": "2023-04-17 10:55:19"
},
"ResponseStatus": {
"Timestamp": "/Date(1681700119599+0800)/",
"Ack": "Success",
"Errors": [],
"Build": null,
"Version": null,
"Extension": [{
"Id": "CLOGGING_TRACE_ID",
"Version": null,
"ContentType": null,
"Value": "489001780207311316"
}, {
"Id": "RootMessageId",
"Version": null,
"ContentType": null,
"Value": "100031671-0a6e4a89-467138-6889241"
}
]
}
}
//订单callback
{
"authentication": {
"timeStamp": "2023-04-19 14:19:26",
"serviceName": "notice.ticketresult",
"messageIdentity": "8c82312e95158e289fd453f33114e0d2",
"companyId": "1503141150"
},
"ticketResult": {
"companyOrderId": "HN1681885121340",
"resultCode": 1,
"resultMsg": null,
"ticketSuccTime": "2023-04-19 14:19:26",
"operateTradeNo": "5027649989833265152",
"orderMasterInfo": {
"totalPayAmount": 12.00,
"orderType": 2,
"contactName": "vivi",
"mobileNo": "up3E0hBuzNbADKxufANHMg==",
"remark": ""
},
"passengerInfoList": [{
"passengerId": 6197111157,
"certificateType": 1,
"certificateName": "赵鹏",
"certificateNo": "oiHef47aYwngLzVN2iiBtTS80fvlfpc8",
"birthday": null,
"realName": "赵鹏",
"passengerType": 1,
"contactMobile": "7s0sfWX+Bx8=",
"contactEmail": "7s0sfWX+Bx8="
}
],
"orderRouteInfoList": [{
"routeId": 1136901379,
"departTime": "2023-04-30 10:16:00",
"arrivalTime": "2023-04-30 10:26:00",
"ticketCount": 1,
"ticketPrice": 6.00,
"fromStationName": "桂林",
"toStationName": "桂林北",
"trainNo": "D8268",
"ticketSeat": "二等座",
"acceptSeat": null,
"routeNo": 1,
"elecNo": "EJW2232127",
"checkWindow": "检票口6"
}
],
"orderTicketInfoList": [{
"ticketId": 892585335,
"routeId": 1136901379,
"passengerId": 6197111157,
"realTicketPrice": 6.00,
"seatName": "二等座",
"carriageNo": "7",
"seatNo": "14B号",
"createTime": "2023-04-19 14:19:26",
"longElecNo": "23174648650D82685902",
"quickPass": 0,
"trainStatus": 0
}
]
}
}
/*退
*/
{
"authentication": {
"timeStamp": "2023-04-28 09:46:40",
"serviceName": "train.artificialTicketReturn",
"companyId": "1503141150",
"messageIdentity": "a46aa9f51cb8dbe299d2584aa41be93a"
},
"companyOrderId": "HN1681696305456",
"operator": "vivi",
"returnServiceFee": "15",
"returnTicketList": [{
"trainNo": "G2910",
"carriageNo": "4",
"seatNo": "5F\u53f7",
"longElecNo": "23383214738D84519712",
"cardFirstImage": "",
"cardSecondImage": ""
}
]
}
/*退票返回的数据结构*/
{
"ResponseStatus": {
"Timestamp": "/Date(1683186036147+0800)/",
"Ack": "Success",
"Errors": [],
"Build": null,
"Version": null,
"Extension": [{
"Id": "CLOGGING_TRACE_ID",
"Version": null,
"ContentType": null,
"Value": "5184875534824024628"
}, {
"Id": "RootMessageId",
"Version": null,
"ContentType": null,
"Value": "100031671-0a638ae3-467551-5279705"
}
]
},
"returnCode": 0,
"returnMessage": "车票价格需要大于 19.5才能退票"
}
/*退款calback*/
{
"authentication": {
"timeStamp": "2023-05-04 11:40:15",
"serviceName": "notice.refundresult",
"messageIdentity": "c38f06426a3e9b11d221f6402ab4fd99",
"companyId": "1503141150"
},
"refundResult": {
"companyOrderId": "HN1683171474981",
"refundType": 5,
"reason": null,
"refundTime": "2023-05-04 11:40:04",
"tradeNo": "5033045727832576000",
"refundAmount": 12.00,
"operateTradeNo": null,
"refundDetailInfoList": null
}
}
/*退款 多张票的情况 长订单号等有所不同*/
{
"authentication": {
"timeStamp": "2023-06-01 15:06:11",
"serviceName": "notice.refundresult",
"messageIdentity": "9af17693f6546dd0719cfcf3f4cbd896",
"companyId": "4003171843"
},
"refundResult": {
"companyOrderId": "HN1685430938567",
"refundType": 2,
"reason": null,
"refundTime": "2023-06-01 15:06:11",
"tradeNo": "5043244432384724992",
"refundAmount": 271.00,
"operateTradeNo": "5042802996723978240",
"refundDetailInfoList": [{
"longElecNo": "24060026739G65552055",
"refundDetailType": 20,
"refundDetailAmount": 271.00
}
]
}
}
{
"authentication": {
"timeStamp": "2023-06-01 15:06:11",
"serviceName": "notice.refundresult",
"messageIdentity": "9af17693f6546dd0719cfcf3f4cbd896",
"companyId": "4003171843"
},
"refundResult": {
"companyOrderId": "HN1685430938567",
"refundType": 2,
"reason": null,
"refundTime": "2023-06-01 15:06:11",
"tradeNo": "5043244431617167360",
"refundAmount": 271.00,
"operateTradeNo": "5042809037335433216",
"refundDetailInfoList": [{
"longElecNo": "24060026739G65552054",
"refundDetailType": 20,
"refundDetailAmount": 271.00
}
]
}
}
//澜海出票成功返回
{
"authentication": {
"timeStamp": "2024-07-10 15:40:50",
"appId": "3649601564",
"mainOrderId": "HN1720487984255"
},
"bodyInfo": {
"agentCode": "000001428",
"contactMobile": "17722807804",
"currentTime": "2022-09-29 10:40:50",
"eOrderNumber": "E5W0086985",
"failCode": 0,
"orderPrice": "720.0",
"orderResultCode": 200,
"mainOrderId": "21158540860",
"payTradeNumber": "2022092922001429951455254961",
"resultMsg": "出票成功",
"ticketList": [{
"ticketCheck": "检票口13AB",
"arriveTime": "2022-10-04 22:33:00",
"deliveryTicketId": 76861483,
"departTime": "2022-10-04 20:02",
"fromStationName": "赣县北",
"passengerList": [{
"carriageNo": "03",
"passengerId": 113317051,
"passengerName": "何沙沙",
"passengerType": 2,
"passportNumber": "420821198609055029",
"passportType": "1",
"passportTypeName": "身份证",
"realTicketPrice": "288.0",
"seatName": "二等座",
"seatNo": "05D"
}, {
"carriageNo": "03",
"passengerId": 113317052,
"passengerName": "刘明山",
"passengerType": 2,
"passportNumber": "362121197703160012",
"passportType": "1",
"passportTypeName": "身份证",
"realTicketPrice": "288.0",
"seatName": "二等座",
"seatNo": "06C"
}, {
"carriageNo": "03",
"passengerId": 113317053,
"passengerName": "刘沛勋【儿童票】",
"passengerType": 3,
"passportNumber": "360721201007070013",
"passportType": "1",
"passportTypeName": "身份证",
"realTicketPrice": "144.0",
"seatName": "二等座",
"seatNo": "09F"
}
],
"ticketCount": 3,
"ticketPrice": "288.0",
"toStationName": "深圳北",
"trainNumber": "G2793"
}
],
"ticketSuccessTime": "2022-09-29 10:40:50",
"userId": 65
}
}

@ -0,0 +1,133 @@
/*澜海返回*/
{
"bodyInfo": "HEYIbCfmv/d057K+gdHTKpv7FVeC4QYpF178Zu69jv0lxaHZbPc6GyiuJFTf1ZT9dFZCWKnHw0tFTZkNepGH7oLkt0CS2h1IEiSs0XPwnzKN9g/RlEaiMPh7rl9ZuBIFxaWRvyKK1cxjxb5CZxrjaIaV/Cm3hmdsIFum2vSGsuTy3FwjRty6RvI+d1rMy+XcInKWewzd9eCUgpA5u68SL9IJJ9TzbKpHI0f9ab/Cu28m2v7ZpQPWC3DgqYgP84x6NFniu0Js/PXU3e5a2lZz1z+a4gX2NvGNINMvNsClpzRzikEVTWqxhz/apLcwnDEJwS2Spt8zt9g3aVgtF6jc9QOdWZYrzuNWV2DH0mdn8Cyb1gqRK+0nLtPQt/NzO0xVLHlZuCsSTW9/r7ZjDd07gX6D+EQzDXVGpKbP+TerNOu77V+SYC5VDBYycpfa+w6Z48OzLZL5D4KN/y5lFI1cWK4MQ8IMlBHd8UUu5Rurx7yCLZvKsaxAK6MzW+Kdf7hza+B18AwPrtvXZ26H66kSF6FK4s6hvrvyeGsUxj2teHdDr9XjDsEnjw8qdamUYSModr0tfQyX5HW7bENc8w8mvCHvJS+fz/eiZctPQ+p8t+RCv0OBwIEVRtivFvkTB3M8xtsAO1oM1LtX13FoSsxyzNFB2d4rTj1K1fPbhmxMKGWmxDdPy4JOzk9OEB9cbG4a22bI/vSnp+YDqu5a/Vp9EeIBOfYUNXTpqnhBaff8ORreXEehjKJzrKZ8XKKcxo7V5S5P02RV2cO9V/v5uL/rbSPBnmR+9qizb9aBBjUKedBLVXXZO1sKJOohv71qFKXauNc6ASW/1iKl08mW4MYAlR1IL1UDr0aWhw7OhYDK+fbRlh55kALEfmn98bvwltrS56QWULdzfpTYSiVnOZ165NX8ywcT+CwF1+WGY6Hj+uYNeIulZKI9XBUKcmqat5RwUEyMNKB3KAdizeiOzp6QAomCttz7XxXJ9h+mWkhDipY8jktMX2Ss3zRCuO0lGphtFxpYdJ3sPYtQnRD71wSUeMVnNzSBcmYBwG3l2tlBrjtIddHp60ZUIYnUcFMKriPn7iO3UWWlVz/XX0ELHrLcXQ==",
"authentication": {
"timeStamp": "2024-07-16 15:42:48",
"appId": "3649601564",
"mainOrderId": "HN1721115685991"
}
}
/*返回编译*/
{
"agentCode": "3649601564",
"contactMobile": "18877331805",
"currentTime": "2024-07-16 15:42:48",
"eOrderNumber": "EGW1561545",
"failCode": 0,
"mainOrderId": "HN1721115685991",
"orderPrice": "6.0",
"orderResultCode": 200,
"payTradeNumber": "1452204560486540561056048965",
"resultMsg": "\u51fa\u7968\u6210\u529f",
"ticketList": [{
"arriveTime": "2024-07-18 09:23",
"deliveryTicketId": 586043269,
"departTime": "2024-07-18 09:13",
"fromStationName": "\u6842\u6797",
"passengerList": [{
"carriageNo": "01",
"passengerId": 571060468,
"passengerName": "\u8d75\u9e4f",
"passengerType": 1,
"passportNumber": "450303197904120517",
"passportType": "1",
"passportTypeName": "\u8eab\u4efd\u8bc1",
"realTicketPrice": "6.0",
"seatName": "\u4e8c\u7b49\u5ea7",
"seatNo": "2A",
"ticketName": ""
}
],
"ticketCount": 1,
"ticketPrice": "6.0",
"toStationName": "\u6842\u6797\u5317",
"trainNumber": "G2910"
}
],
"ticketSuccessTime": "2024-07-16 15:42:48",
"userId": 428
}
/**账单列表*/
{
"success": true,
"code": "0",
"msg": "",
- "data": {
- "records": [
- {
"saveDay": "2024-07-31",
"type": "出票",
"mainOrderId": "HN1722438313448",
"dataId": null,
"ticket12306Id": "E1W1330191",
"trainNum": "K73",
"fromStation": "重庆北",
"toStation": "张家界西",
"fromTime": "2024-08-12 08:32",
"passengerName": "ABAJO LOPEZ LUCIA",
"price": 69,
"oldPrice": null,
"changeCost": null,
"handleTime": "2024-07-31 23:08:08",
"createTime": "2024-07-31 23:05:32"
},
- {
"saveDay": "2024-07-31",
"type": "出票",
"mainOrderId": "HN1722438313448",
"dataId": null,
"ticket12306Id": "E1W1330191",
"trainNum": "K73",
"fromStation": "重庆北",
"toStation": "张家界西",
"fromTime": "2024-08-12 08:32",
"passengerName": "ESCAMILLA QUILES MARIO",
"price": 69,
"oldPrice": null,
"changeCost": null,
"handleTime": "2024-07-31 23:08:08",
"createTime": "2024-07-31 23:05:32"
},
- {
"saveDay": "2024-08-01",
"type": "出票",
"mainOrderId": "HN1722441803173",
"dataId": null,
"ticket12306Id": "E2W4589927",
"trainNum": "D954",
"fromStation": "宜昌东",
"toStation": "上海",
"fromTime": "2024-08-13 14:06",
"passengerName": " PALOMA PALENCIA GRANDE",
"price": 676,
"oldPrice": null,
"changeCost": null,
"handleTime": "2024-08-01 00:06:37",
"createTime": "2024-08-01 00:03:56"
},
- {
"saveDay": "2024-08-01",
"type": "出票",
"mainOrderId": "HN1722441803173",
"dataId": null,
"ticket12306Id": "E2W4589927",
"trainNum": "D954",
"fromStation": "宜昌东",
"toStation": "上海",
"fromTime": "2024-08-13 14:06",
"passengerName": "FRANCISCO RAFAEL GARCIA TUDELA",
"price": 676,
"oldPrice": null,
"changeCost": null,
"handleTime": "2024-08-01 00:06:37",
"createTime": "2024-08-01 00:03:56"
}
],
"total": 4,
"size": 100,
"current": 1,
"searchCount": true,
"pages": 1
}
}

@ -0,0 +1 @@
[{"id":1,"seatName":"硬座","seatItems":["硬座","无座"]},{"id":2,"seatName":"硬卧","seatItems":["硬卧上","硬卧中","硬卧下"]},{"id":3,"seatName":"软座","seatItems":["软座"]},{"id":4,"seatName":"一等软座","seatItems":["一等软座"]},{"id":5,"seatName":"二等软座","seatItems":["二等软座"]},{"id":6,"seatName":"特等软座","seatItems":["特等软座"]},{"id":7,"seatName":"软卧","seatItems":["软卧上","软卧下"]},{"id":8,"seatName":"商务座","seatItems":["商务座"]},{"id":9,"seatName":"一等包座","seatItems":["一等包座"]},{"id":10,"seatName":"观光座","seatItems":["观光座"]},{"id":11,"seatName":"特等座","seatItems":["特等座"]},{"id":12,"seatName":"一等座","seatItems":["一等座"]},{"id":13,"seatName":"二等座","seatItems":["二等座","无座"]},{"id":14,"seatName":"高级软卧","seatItems":["高级软卧上","高级软卧下"]},{"id":15,"seatName":"包厢硬卧","seatItems":["包厢硬卧上","包厢硬卧中","包厢硬卧下"]},{"id":16,"seatName":"包厢软座","seatItems":["包厢软座"]},{"id":17,"seatName":"一等卧","seatItems":["一等卧上","一等卧下"]},{"id":18,"seatName":"二等卧","seatItems":["二等卧上","二等卧中","二等卧下"]},{"id":19,"seatName":"混编软座","seatItems":["混编软座"]},{"id":20,"seatName":"动卧","seatItems":["动卧上","动卧下"]},{"id":21,"seatName":"多功能座","seatItmes":["多功能座"]},{"id":22,"seatName":"二等包座","seatItems":["二等包座"]},{"id":23,"seatName":"一人软包","seatItems":["一人软包"]},{"id":24,"seatName":"二等软包","seatItmes":["二等软包"]},{"id":25,"seatName":"高级动卧","seatItems":["高级动卧上","高级动卧下"]}]

@ -15,6 +15,10 @@ class Index extends CI_Controller
private $Log_Client; private $Log_Client;
private $logstore = array( private $logstore = array(
'cht' => 'globalhoghlights' 'cht' => 'globalhoghlights'
,
'ghtobzg' => 'globalhoghlights'
,
'ghtobhw' => 'globalhoghlights'
, ,
'ah' => 'asiahighlights' 'ah' => 'asiahighlights'
, ,
@ -24,6 +28,8 @@ class Index extends CI_Controller
, ,
'yz' => 'yangtzeriver' 'yz' => 'yangtzeriver'
, ,
'ts' => 'trainspread_com'
,
'gl' => 'guilinchina' 'gl' => 'guilinchina'
, ,
'sht' => 'shanghaihighlights' 'sht' => 'shanghaihighlights'
@ -50,7 +56,19 @@ class Index extends CI_Controller
, ,
'vc' => 'voyageschine' 'vc' => 'voyageschine'
, ,
'vchw' => 'voyageschine', 'vchw' => 'voyageschine'
,
'gh_vac' => 'globalhighlights_es'
,
'gh_jp' => 'globalhighlights_jp'
,
'gh_vc' => 'globalhighlights_fr'
,
'gh_ru' => 'globalhighlights_ru'
,
'gh_gm' => 'globalhighlights_de'
,
'gh_it' => 'globalhighlights_it'
); //站点日志存储库,每个网站对应一个 ); //站点日志存储库,每个网站对应一个
public function __construct() public function __construct()
@ -64,12 +82,13 @@ class Index extends CI_Controller
public function index() public function index()
{ {
$data = array(); $data = array();
$orders = $this->wwwlogs_model->get_update_list(10); $orders = $this->wwwlogs_model->get_update_list(15);
// print_r($orders); // print_r($orders);
if ($orders) { if ($orders) {
foreach ($orders as $item) { foreach ($orders as $item) {
$site_code = strtolower($item->COLI_WebCode); $site_code = strtolower($item->COLI_WebCode);
if (in_array($site_code, array('gm', 'gmhw', 'jp', 'jphw', 'ru', 'ruhw', 'it', 'ithw', 'vac', 'vachw', 'vc', 'vchw'))) { //判断是否为国际站点
if (in_array($site_code, array('gm', 'gmhw', 'jp', 'jphw', 'ru', 'ruhw', 'it', 'ithw', 'vac', 'vachw', 'vc', 'vchw', 'gh_vac', 'gh_jp', 'gh_vc', 'gh_gm', 'gh_ru', 'gh_it'))) {
try { try {
$this->orders_view_path_int($item->COLI_SN, $site_code, $item->COLI_SenderIP, 0, $item->COLI_OrderDetailText); $this->orders_view_path_int($item->COLI_SN, $site_code, $item->COLI_SenderIP, 0, $item->COLI_OrderDetailText);
} catch (Exception $err) { } catch (Exception $err) {
@ -78,7 +97,7 @@ class Index extends CI_Controller
} else { } else {
$this->orders_view_path($item->COLI_SN, $site_code, $item->COLI_SenderIP); $this->orders_view_path($item->COLI_SN, $site_code, $item->COLI_SenderIP);
} }
echo 'COLI_WebCode:' . $item->COLI_WebCode . ' COLI_ID:' . $item->COLI_ID . ' COLI_SenderIP:' . $item->COLI_SenderIP . '<br/>'; echo 'COLI_WebCode:' . $item->COLI_WebCode . ' COLI_ID:' . $item->COLI_ID . ' COLI_SenderIP:' . $item->COLI_SenderIP . ' COLI_SN:' . $item->COLI_SN . ' COLI_ApplyDate:' . $item->COLI_ApplyDate. '<br/>';
} }
// echo 'test async v6'; // echo 'test async v6';
} }
@ -199,6 +218,7 @@ class Index extends CI_Controller
and (remote_addr='$ip' OR http_x_forwarded_for like '%$ip%' OR request_uri like '%$client_id%') and (remote_addr='$ip' OR http_x_forwarded_for like '%$ip%' OR request_uri like '%$client_id%')
ORDER BY __time__ DESC ORDER BY __time__ DESC
"; // 同时使用IP和用户ID "; // 同时使用IP和用户ID
//echo '<code>'.$query_string.'</code><br>';
$from = time() - 604800 * 2; //往前 604800(7天), 1296000(15天) $from = time() - 604800 * 2; //往前 604800(7天), 1296000(15天)
$to = time(); $to = time();
$request = new Aliyun_Log_Models_GetLogsRequest('globalhoghlights', $this->logstore[$sitecode], $from, $to, '', $query_string, 100, $offset, true); $request = new Aliyun_Log_Models_GetLogsRequest('globalhoghlights', $this->logstore[$sitecode], $from, $to, '', $query_string, 100, $offset, true);
@ -229,9 +249,10 @@ class Index extends CI_Controller
} }
} }
// print_r($LogData); //echo '<code>'.print_r($LogData, true).'</code><br>';
$this->wwwlogs_model->add('wwwlogs', $LogData); $add_status = $this->wwwlogs_model->add('wwwlogs', $LogData);
//echo '<code> add_status => '.$add_status.'</code><br>';
} }
} catch (Aliyun_Log_Exception $ex) { } catch (Aliyun_Log_Exception $ex) {
print_r($ex); print_r($ex);
@ -262,4 +283,95 @@ class Index extends CI_Controller
logVarDump($ex); logVarDump($ex);
} }
} }
//测试接口权限 - lmr
public function test($COLI_SN, $sitecode = 'cht', $ip, $offset = 0, $order_text)
{
// 测试数据 - 2
//$COLI_SN = 1004250;
//$sitecode = 'gmhw';
//$ip = '2a00:6020:41c7:3900:20c1:3c5c:c854:7095';
//$offset = 0;
//$order_text = 'Gaid-> GA1.2.1747854879.1682254516 <-Gaid
//YandexId-> 1682254516819066352 <-YandexId
//clino :g-de-in-2
//startdate :2023-08-06
//adultnum :4
//Reiseroute Klasse :4 sterne hotel
//tourname :Rundreisen Nordindien 3 Wochen
//tages :21
//Reiseroutennummer :14083
//Geschlecht :
//Name :Firestone
//nationality :?sterreich
//E-Mail :AnaAnaki@hotmail.com
//Telefon :+4369918253609
//来源页面 :https://www.chinarundreisen.com/indien/top-indien-reiseziele/
//
//from:android
//Mozilla/5.0 (Linux; Android 9; SM-G950F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 X-Middleton/1';
// 匹配clientId的正则表达式
$yarndexPat = "/YandexId->(.+?)<-YandexId/";
// 检查文本是否匹配正则表达式
if (preg_match($yarndexPat, $order_text, $yandexMatches)) {
$client_id = trim($yandexMatches[1]);
} else {
$gaPat = "/Gaid->(.+?)<-Gaid/";
if (preg_match($gaPat, $order_text, $gaMatches)) {
$client_id = trim($gaMatches[1]);
} else {
$client_id = "-- Match not found --";
}
}
// echo $client_id;
$query_string = "
* | select time_local,http_referer,request_uri,http_user_agent,http_x_forwarded_for,
remote_addr,request_method,request_time,status,body_bytes_sent,upstream_response_time from log where
request_uri like '/io/?event=pageview%'
and (remote_addr='$ip' OR http_x_forwarded_for like '%$ip%' OR request_uri like '%$client_id%')
ORDER BY __time__ DESC
"; // 同时使用IP和用户ID
$from = time() - 604800 * 2; //往前 604800(7天), 1296000(15天)
$to = time();
$request = new Aliyun_Log_Models_GetLogsRequest('globalhoghlights', $this->logstore[$sitecode], $from, $to, '', $query_string, 100, $offset, true);
try {
$LogData = new StdClass;
$LogData->wl_sitecode = $sitecode;
$LogData->wl_COLI_SN = $COLI_SN; //订单SN
$response = $this->Log_Client->getLogs($request);
foreach ($response->getLogs() as $log) {
foreach ($log->getContents() as $key => $value) {
$LogData->$key = $value;
}
// 调整数据: http_referer -> request_uri, request_uri.ref -> http_referer
if (isset($LogData->http_referer) && isset($LogData->request_uri)) {
$request_uri = $LogData->request_uri;
$http_referer = $LogData->http_referer;
// http_referer -> request_uri
$LogData->request_uri = $LogData->http_referer;
// request_uri.ref -> http_referer
$query_string_tmp = urldecode($request_uri);
parse_str($query_string_tmp, $params);
if (isset($params['ref'])) {
$LogData->http_referer = $params['ref'];
} else {
$LogData->http_referer = '(not set)';
}
}
print_r($LogData);
// $this->wwwlogs_model->add('wwwlogs', $LogData);
}
} catch (Aliyun_Log_Exception $ex) {
print_r($ex);
} catch (Exception $ex) {
print_r($ex);
}
}
} }

@ -43,6 +43,7 @@ class wwwlogs_model extends CI_Model
{ {
$this->init(); $this->init();
$this->topnum = $topnum; $this->topnum = $topnum;
$this->orderby = ' order by COLI_SN desc ';
return $this->get_list(); return $this->get_list();
} }
@ -63,7 +64,7 @@ class wwwlogs_model extends CI_Model
$sql .= " $sql .= "
COLI_SN,COLI_ID, COLI_WebCode,COLI_Name, COLI_OrderDetailText, COLI_OrderStartDate,COLI_SenderIP,COLI_WebCode,COLI_ApplyDate from ConfirmLineInfo COLI_SN,COLI_ID, COLI_WebCode,COLI_Name, COLI_OrderDetailText, COLI_OrderStartDate,COLI_SenderIP,COLI_WebCode,COLI_ApplyDate from ConfirmLineInfo
where 1=1 where 1=1
and COLI_WebCode in ('cht','ah','gh','ct','yz','sht','gl','gm','jp','ru','it','vac','vc','gmhw','jphw','ruhw','ithw','vachw','vchw') and COLI_WebCode in ('cht','ah','gh','ct','yz','sht','gl','gm','jp','ru','it','vac','vc','gmhw','jphw','ruhw','ithw','vachw','vchw','gh_vac','gh_vc','gh_jp','gh_ru','gh_it','gh_gm','ghtobzg','ghtobhw')
and not exists (select top 1 1 from InfoManager.dbo.wwwlogs where wl_COLI_SN=COLI_SN ) and not exists (select top 1 1 from InfoManager.dbo.wwwlogs where wl_COLI_SN=COLI_SN )
and COLI_SenderIP is not null and COLI_SenderIP is not null
and DeleteFlag=0 and DeleteFlag=0
@ -72,7 +73,7 @@ class wwwlogs_model extends CI_Model
$this->where ? $sql .= $this->where : false; $this->where ? $sql .= $this->where : false;
$this->orderby ? $sql .= $this->orderby : false; $this->orderby ? $sql .= $this->orderby : false;
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
//print_r($this->INFO->queries); // print_r($this->INFO->queries);
if ($this->topnum === 1) { if ($this->topnum === 1) {
if ($query->num_rows() > 0) { if ($query->num_rows() > 0) {
$row = $query->row(); $row = $query->row();

@ -12,62 +12,62 @@
<link rel="shortcut icon" href="/bootstrap/img/glyphicons_290_skull.png"> <link rel="shortcut icon" href="/bootstrap/img/glyphicons_290_skull.png">
<script language="javascript"> <script language="javascript">
//资源文件上传管理 //资源文件上传管理
function openKCFinder_singleFile_res() { function openKCFinder_singleFile_res() {
CKFinder.modal({ CKFinder.modal({
chooseFiles: true, chooseFiles: true,
pass: 'sitecode', pass: 'sitecode',
sitecode: '<?php echo $this->config->item('site_code'); ?>', sitecode: '<?php echo $this->config->item('site_code'); ?>',
width: 1024, width: 1024,
height: 800, height: 800,
onInit: function(finder) { onInit: function (finder) {
finder.on('files:choose', function(evt) { finder.on('files:choose', function (evt) {
var file = evt.data.files.first(); var file = evt.data.files.first();
alert(file.getUrl()); alert(file.getUrl());
}); });
finder.on('file:choose:resizedImage', function(evt) { finder.on('file:choose:resizedImage', function (evt) {
alert(evt.data.resizedUrl); alert(evt.data.resizedUrl);
}); });
}
});
}
//快速图片上传
function openKCFinder_fast() {
window.CallBack = oopenKCFinder_fast_callback;
window.open(
'/media/popselectpicture.php?site_code=<?php echo $this->config->item('site_code'); ?>&site_lgc=<?php echo $this->config->item('site_lgc'); ?>',
'kcfinder_textbox',
'status=0, toolbar=0, location=0, menubar=0, directories=0,resizable=1, scrollbars=0, width=800, height=600');
}
function oopenKCFinder_fast_callback(result) {
var site_image_url = '<?php echo $this->config->item('site_image_url') ?>';
if (result != null && result.Pinfo[0]) {
$.modaldialog.success("图片地址:<br/>" + site_image_url + result.Pinfo[0].PUrl);
} }
});
}
//快速图片上传
function openKCFinder_fast() {
window.CallBack = oopenKCFinder_fast_callback;
window.open(
'/media/popselectpicture.php?site_code=<?php echo $this->config->item('site_code'); ?>&site_lgc=<?php echo $this->config->item('site_lgc'); ?>',
'kcfinder_textbox',
'status=0, toolbar=0, location=0, menubar=0, directories=0,resizable=1, scrollbars=0, width=800, height=600');
}
function oopenKCFinder_fast_callback(result) {
var site_image_url = '<?php echo $this->config->item('site_image_url') ?>';
if (result != null && result.Pinfo[0]) {
$.modaldialog.success("图片地址:<br/>" + site_image_url + result.Pinfo[0].PUrl);
} }
} //标识所有信息未已读
//标识所有信息未已读 function set_allmsg_to_read(ic_ids) {
function set_allmsg_to_read(ic_ids) { var url = '<?php echo site_url("author/set_msg_to_read"); ?>';
var url = '<?php echo site_url("author/set_msg_to_read"); ?>'; $.post(url, {
$.post(url, { 'msg_ids': ic_ids
'msg_ids': ic_ids }, function (result) {
}, function(result) { window.location.href = window.location.href;
window.location.href = window.location.href; });
}); }
}
</script> </script>
<script> <script>
var _hmt = _hmt || []; var _hmt = _hmt || [];
(function() { (function () {
var hm = document.createElement("script"); var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?57ab7a81de0914994d5f2cf7986124f8"; hm.src = "https://hm.baidu.com/hm.js?57ab7a81de0914994d5f2cf7986124f8";
var s = document.getElementsByTagName("script")[0]; var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s); s.parentNode.insertBefore(hm, s);
})(); })();
</script> </script>
</head> </head>
@ -132,21 +132,19 @@
class="navbar-form pull-left"> class="navbar-form pull-left">
<div class="input-append"> <div class="input-append">
<span class="add-on"> <span class="add-on">
<input type="checkbox" title="全文搜索" name="all_text_search" id="all_text_search" value="true" <input type="checkbox" title="全文搜索" name="all_text_search" id="all_text_search" value="true" <?php echo (isset($all_text_search) && ($all_text_search == 'true')) ? 'checked' : false; ?>>
<?php echo (isset($all_text_search) && ($all_text_search == 'true')) ? 'checked' : false; ?>
>
</span> </span>
<input type="text" class="input-xlarge" name="keywords" id="keywords" <input type="text" class="input-xlarge" name="keywords" id="keywords"
value="<?php echo isset($keywords) ? $keywords : false; ?>"> value="<?php echo isset($keywords) ? $keywords : false; ?>">
<button class="btn">搜索</button> <button class="btn">搜索</button>
<?php if (in_array($this->config->item('site_code'), array('jp', 'gm', 'vc', 'vac', 'ru', 'it'))) { ?> <?php if (in_array($this->config->item('site_code'), array('jp', 'gm', 'vc', 'vac', 'ru', 'it', 'gh_jp', 'gh_gm', 'gh_vc', 'gh_vac', 'gh_ru', 'gh_it'))) { ?>
<a href="<?php <a href="<?php
$admin_info = $this->session->userdata('session_admin'); $admin_info = $this->session->userdata('session_admin');
echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>" target="_blank" echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>"
class="btn" title="图片上传管理"><i class="icon-picture"></i></a> target="_blank" class="btn" title="图片上传管理"><i class="icon-picture"></i></a>
<?php } else { ?> <?php } else { ?>
<a href="#" onclick="openKCFinder_singleFile_res();" class="btn" title="快速上传图片"><i <a href="#" onclick="openKCFinder_singleFile_res();" class="btn" title="快速上传图片"><i
class="icon-picture"></i></a> class="icon-picture"></i></a>
<?php } ?> <?php } ?>
<a href="#" onclick="openKCFinder_fast();" class="btn btn-default btn-sm" title="多媒体中心"><span <a href="#" onclick="openKCFinder_fast();" class="btn btn-default btn-sm" title="多媒体中心"><span
class="icon-folder-open"></span></a> class="icon-folder-open"></span></a>
@ -163,80 +161,86 @@
<ul class="nav pull-right"> <ul class="nav pull-right">
<?php <?php
$all_unread_sms = get_all_unread_sms(); $all_unread_sms = get_all_unread_sms();
$info_unread_sms = get_all_unread_sms('info'); $info_unread_sms = get_all_unread_sms('info');
if (isset($information->ic_id)) if (isset($information->ic_id))
$current_msg = $information->ic_id; $current_msg = $information->ic_id;
if (isset($task->t_id)) if (isset($task->t_id))
$current_msg = $task->t_id; $current_msg = $task->t_id;
$total_count = $all_unread_sms['sms_count'] + $info_unread_sms['sms_count']; //计算未读消息总数 $total_count = $all_unread_sms['sms_count'] + $info_unread_sms['sms_count']; //计算未读消息总数
$unread_sms_ic_id = 0; //用于设置所有收录消息为已读 $unread_sms_ic_id = 0; //用于设置所有收录消息为已读
if ($total_count != 0) { if ($total_count != 0) {
?> ?>
<!-- 如果当前页面存在未读消息,则消息数减一 --> <!-- 如果当前页面存在未读消息,则消息数减一 -->
<?php <?php
if (isset($current_msg) && isset($all_unread_sms['sms'][$current_msg])) { if (isset($current_msg) && isset($all_unread_sms['sms'][$current_msg])) {
$total_count = $total_count - count($all_unread_sms['sms'][$current_msg]); $total_count = $total_count - count($all_unread_sms['sms'][$current_msg]);
unset($all_unread_sms['sms'][$current_msg]); unset($all_unread_sms['sms'][$current_msg]);
} }
?> ?>
<?php <?php
if (isset($current_msg) && isset($info_unread_sms['sms'][$current_msg])) { if (isset($current_msg) && isset($info_unread_sms['sms'][$current_msg])) {
$total_count = $total_count - count($info_unread_sms['sms'][$current_msg]); $total_count = $total_count - count($info_unread_sms['sms'][$current_msg]);
unset($info_unread_sms['sms'][$current_msg]); unset($info_unread_sms['sms'][$current_msg]);
} }
?>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-envelope icon-white pull-left" style="margin-top:3px;"></i> <span
class="badge badge-important pull-right">
<?php echo $total_count; ?>
</span>
</a>
<ul class="dropdown-menu">
<!-- 信息平台的消息 -->
<?php if (isset($info_unread_sms['sms']) && !empty($info_unread_sms['sms'])) { ?>
<a style="padding-left:20px;" href="javascript:void(0);"
onclick="set_allmsg_to_read($('#unreadinfomsg').val());">标记全部收录信息为已读</a>
<li class="divider"></li>
<?php foreach ($info_unread_sms['sms'] as $m) { ?>
<li><a href="<?php echo site_url('information/edit/' . $m[0]->is_id); ?>">
<?php
$t_title = get_text_short($m[0]->t_title, 15);
echo '[' . $m[0]->ic_sitecode . '] ' . $t_title['content'] . ' (' . $m[0]->m_content . ')';
?>
</a>
</li>
<?php $unread_sms_ic_id .= ',' . $m[0]->m_object_id; ?>
<?php } ?>
<li class="divider"></li>
<input type="hidden" name="unreadinfomsg" id="unreadinfomsg" value="<?php echo $unread_sms_ic_id; ?>">
<?php } ?>
<!--作者平台的消息-->
<?php foreach ($all_unread_sms['sms'] as $am) { ?>
<li><a href="<?php echo site_url('author/edit_task/' . $am[0]->m_object_id); ?>">
<?php
$t_title = get_text_short($am[0]->t_title, 15);
echo $t_title['content'] . ' (' . count($am) . ')';
?> ?>
<li class="dropdown"> </a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> </li>
<i class="icon-envelope icon-white pull-left" style="margin-top:3px;"></i> <span <?php } ?>
class="badge badge-important pull-right"><?php echo $total_count; ?></span> </ul>
</a> </li>
<ul class="dropdown-menu">
<!-- 信息平台的消息 -->
<?php if (isset($info_unread_sms['sms']) && !empty($info_unread_sms['sms'])) { ?>
<a style="padding-left:20px;" href="javascript:void(0);"
onclick="set_allmsg_to_read($('#unreadinfomsg').val());">标记全部收录信息为已读</a>
<li class="divider"></li>
<?php foreach ($info_unread_sms['sms'] as $m) { ?>
<li><a href="<?php echo site_url('information/edit/' . $m[0]->is_id); ?>"><?php
$t_title = get_text_short($m[0]->t_title, 15);
echo '[' . $m[0]->ic_sitecode . '] ' . $t_title['content'] . ' (' . $m[0]->m_content . ')';
?></a>
</li>
<?php $unread_sms_ic_id .= ',' . $m[0]->m_object_id; ?>
<?php } ?>
<li class="divider"></li>
<input type="hidden" name="unreadinfomsg" id="unreadinfomsg" value="<?php echo $unread_sms_ic_id; ?>">
<?php } ?>
<!--作者平台的消息-->
<?php foreach ($all_unread_sms['sms'] as $am) { ?>
<li><a
href="<?php echo site_url('author/edit_task/' . $am[0]->m_object_id); ?>"><?php
$t_title = get_text_short($am[0]->t_title, 15);
echo $t_title['content'] . ' (' . count($am) . ')';
?></a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?> <?php } ?>
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">
<?php <?php
echo $this->config->item('site_code'); echo $this->config->item('site_code');
echo ' -'; echo ' -';
$admin_info = $this->session->userdata('session_admin'); $admin_info = $this->session->userdata('session_admin');
echo $admin_info['OPI_Name']; echo $admin_info['OPI_Name'];
?> ?>
<b class="caret"></b> <b class="caret"></b>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<?php foreach ($this->config->item('site') as $site_item) { ?> <?php foreach ($this->config->item('site') as $site_item) { ?>
<li> <a <li> <a href="<?php echo site_url('login/change_site/' . $site_item['site_code']); ?>">
href="<?php echo site_url('login/change_site/' . $site_item['site_code']); ?>"><?php echo $site_item['site_code'] ?></a> <?php echo $site_item['site_code'] ?>
</li> </a>
</li>
<?php } ?> <?php } ?>
<li><a href="<?php echo site_url('login/out'); ?>">退出</a></li> <li><a href="<?php echo site_url('login/out'); ?>">退出</a></li>

@ -202,7 +202,7 @@
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-default btn-sm" type="submit">搜索</button> <button class="btn btn-default btn-sm" type="submit">搜索</button>
<?php if (in_array($this->config->item('site_code'), array('jp', 'gm', 'vc', 'vac', 'ru', 'it'))) { ?> <?php if (in_array($this->config->item('site_code'), array('jp', 'gm', 'vc', 'vac', 'ru', 'it', 'gh_jp', 'gh_gm', 'gh_vc', 'gh_vac', 'gh_ru', 'gh_it'))) { ?>
<a href="<?php <a href="<?php
$admin_info = $this->session->userdata('session_admin'); $admin_info = $this->session->userdata('session_admin');
echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>" echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>"
@ -217,8 +217,6 @@
echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>" echo 'https://multimedia.mycht.cn/authorise/' . $admin_info['OPI_SN'] . '/' . $this->config->item('site_code') ?>"
class="btn btn-default btn-sm" title="多媒体图片"><span class="glyphicon glyphicon-new-window"></span></a> class="btn btn-default btn-sm" title="多媒体图片"><span class="glyphicon glyphicon-new-window"></span></a>
<?php } ?> <?php } ?>
<a href="#" onclick="openKCFinder_fast();" class="btn btn-default btn-sm" title="多媒体中心"><span
class="glyphicon glyphicon-folder-open"></span></a>
<a href="#" title="静态化更新" class="btn btn-default btn-sm" data-toggle="modal" <a href="#" title="静态化更新" class="btn btn-default btn-sm" data-toggle="modal"
data-target="#cache_refresh_modal"><span class="glyphicon glyphicon-repeat"></span></a> data-target="#cache_refresh_modal"><span class="glyphicon glyphicon-repeat"></span></a>
<a href="#" title="cdn缓存清理" class="btn btn-default btn-sm" data-toggle="modal" <a href="#" title="cdn缓存清理" class="btn btn-default btn-sm" data-toggle="modal"

File diff suppressed because it is too large Load Diff

@ -59,11 +59,11 @@
} }
</style> </style>
<script type="text/javascript"> <script type="text/javascript">
$(function() { $(function () {
//更新静态页,异步请求队列(setp_set个) //更新静态页,异步请求队列(setp_set个)
var setp_set = 8; var setp_set = 8;
$('#update').on('click', function() { $('#update').on('click', function () {
var $data = $('.data'); var $data = $('.data');
for (var i = 0; i < setp_set; i++) { for (var i = 0; i < setp_set; i++) {
dg_ajax($data, i, setp_set); dg_ajax($data, i, setp_set);
@ -71,7 +71,7 @@
}); });
//下拉选站点 //下拉选站点
$('a.sss').on('click', function() { $('a.sss').on('click', function () {
var site = $(this).html(); var site = $(this).html();
location.href = '/info.php/login/change_site/' + site + '/?url=/cache/update/'; location.href = '/info.php/login/change_site/' + site + '/?url=/cache/update/';
}); });
@ -90,14 +90,14 @@
data: { data: {
'<?php echo ($post_para); ?>': file '<?php echo ($post_para); ?>': file
}, },
success: function(data) { success: function (data) {
star = star + step; star = star + step;
current.find('.msg_wait').css('color', 'blue').html('成功'); current.find('.msg_wait').css('color', 'blue').html('成功');
count_num(num_zero); count_num(num_zero);
//console.log(star+''+file); //console.log(star+''+file);
dg_ajax(dom, star, step); dg_ajax(dom, star, step);
}, },
error: function() { error: function () {
current.find('.msg_wait').css('color', 'red').html('重试'); current.find('.msg_wait').css('color', 'red').html('重试');
dg_ajax(dom, star, step); dg_ajax(dom, star, step);
} }
@ -122,7 +122,8 @@
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li class="active dropdown mr10"> <li class="active dropdown mr10">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
站点:<?php echo ($this->config->item('site_code')); ?> 站点:
<?php echo ($this->config->item('site_code')); ?>
<b class="caret"></b> <b class="caret"></b>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
@ -144,15 +145,38 @@
<li> <li>
<a class="sss">it</a> <a class="sss">it</a>
</li> </li>
<li>
<a class="sss">gh_jp</a>
</li>
<li>
<a class="sss">gh_gm</a>
</li>
<li>
<a class="sss">gh_vc</a>
</li>
<li>
<a class="sss">gh_vac</a>
</li>
<li>
<a class="sss">gh_ru</a>
</li>
<li>
<a class="sss">gh_it</a>
</li>
</ul> </ul>
</li> </li>
<span class="mt12 label label-success">缓存目录<?php echo (count($path)); ?></span> <span class="mt12 label label-success">缓存目录
<span class="mt12 label label-info">含文件<?php echo (count($file)); ?></span> <?php echo (count($path)); ?>
</span>
<span class="mt12 label label-info">含文件
<?php echo (count($file)); ?>
</span>
<span class="mt12 label label-important none" id="count_num">已更新0个页面 进度0%</span> <span class="mt12 label label-important none" id="count_num">已更新0个页面 进度0%</span>
<form class="form-search" id="path_search" action="#" method="post"> <form class="form-search" id="path_search" action="#" method="post">
<input type="text" placeholder="输入路径删选,例如:/tours/。" value="<?php if (isset($_POST['p'])) { <input type="text" placeholder="输入路径删选,例如:/tours/。" value="<?php if (isset($_POST['p'])) {
echo ($_POST['p']); echo ($_POST['p']);
} ?>" class="input-medium search-query" name="p" /> } ?>" class="input-medium search-query" name="p" />
<button type="submit" class="btn">筛选</button> <button type="submit" class="btn">筛选</button>
</form> </form>
<a id="update" class="btn mr10 btn-info">更新</a> <a id="update" class="btn mr10 btn-info">更新</a>
@ -169,18 +193,32 @@
</tr> </tr>
</thead> </thead>
<tbody class="data_group"> <tbody class="data_group">
<?php $c = 0; ?>
<?php foreach ($file as $key => $it) { <?php foreach ($file as $key => $it) {
$encode = mb_detect_encoding($it, array('ASCII', 'GBK', 'ISO-8859-1', 'UTF-8')); // $encode = mb_detect_encoding($it, array('ASCII', 'GBK', 'ISO-8859-1', 'UTF-8'));
$_it = mb_convert_encoding($it, 'UTF8', $encode); // $_it = mb_convert_encoding($it, 'UTF8', $encode);
?> $_it = preg_replace('/#(.*)$/i', '', $it);
if (strlen($it) != strlen($_it))
continue;
$c++;
?>
<tr class="data"> <tr class="data">
<td><?php echo ($key + 1); ?></td> <td>
<?php echo ($c); ?>
</td>
<?php if (strlen($_it) > 100) { ?> <?php if (strlen($_it) > 100) { ?>
<td class="file" title="<?php echo ($_it); ?>"><?php echo (substr($_it, 0, 40)); ?>..........<?php echo (substr($_it, -35)); ?></td> <td class="file" title="<?php echo ($_it); ?>">
<?php echo (substr($_it, 0, 40)); ?>..........
<?php echo (substr($_it, -35)); ?>
</td>
<?php } else { ?> <?php } else { ?>
<td class="file" title="<?php echo ($_it); ?>"><?php echo ($_it); ?></td> <td class="file" title="<?php echo ($_it); ?>">
<?php echo ($_it); ?>
</td>
<?php } ?> <?php } ?>
<td><?php echo ($file_time[$it]); ?></td> <td>
<?php echo (isset($file_time[$it]) ? $file_time[$it] : 'bad file'); ?>
</td>
<td class="msg_wait">无操作</td> <td class="msg_wait">无操作</td>
</tr> </tr>
<?php } ?> <?php } ?>

@ -2,9 +2,10 @@
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" alt="tour rating">
<p style="height: auto;"><?php echo $feedback['content'] ?></p> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>

@ -1,14 +1,14 @@
<!-- Bangkok --> <!-- Bangkok -->
<h2 id="thailand">Thailand Travel Reviews</h2> <h2 id="thailand">Thailand Travel Reviews</h2>
<?php if (!empty($Bangkok)) {?> <?php if (!empty($Bangkok)) {?>
<?php foreach ($Bangkok as $index => $feedback) {?> <?php foreach ($Bangkok as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <div class="more_tours"><a href="/reviews/thailand">More Thailand reviews</a></div> <?php }?> <div class="more_tours"><a href="/reviews/thailand">More Thailand reviews</a></div>
<?php }?> <?php }?>
@ -19,10 +19,11 @@
<?php if (!empty($Hanoi)) {?> <?php if (!empty($Hanoi)) {?>
<?php foreach ($Hanoi as $index => $feedback) {?> <?php foreach ($Hanoi as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?><div class="more_tours"><a href="/reviews/vietnam">More Vietnam reviews</a></div> <?php }?><div class="more_tours"><a href="/reviews/vietnam">More Vietnam reviews</a></div>
<?php }?> <?php }?>
@ -33,10 +34,11 @@
<?php if (!empty($Siem_Reap)) {?> <?php if (!empty($Siem_Reap)) {?>
<?php foreach ($Siem_Reap as $index => $feedback) {?> <?php foreach ($Siem_Reap as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?><div class="more_tours"><a href="/reviews/cambodia">More Cambodia reviews</a></div> <?php }?><div class="more_tours"><a href="/reviews/cambodia">More Cambodia reviews</a></div>
<?php }?> <?php }?>
@ -47,28 +49,16 @@
<?php if (!empty($Tokyo)) {?> <?php if (!empty($Tokyo)) {?>
<?php foreach ($Tokyo as $index => $feedback) {?> <?php foreach ($Tokyo as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?><div class="more_tours"><a href="/reviews/japan">More Japan reviews</a></div> <?php }?><div class="more_tours"><a href="/reviews/japan">More Japan reviews</a></div>
<?php }?> <?php }?>
<!-- India
<h2 id="india">India Travel Reviews</h2>
<?php if (!empty($Delhi)) {?>
<?php foreach ($Delhi as $index => $feedback) {?>
<div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div>
</div>
<?php }?><div class="more_tours"><a href="/reviews/india">More India reviews</a></div>
<?php }?>
-->
<!-- Myanmar --> <!-- Myanmar -->
@ -76,10 +66,11 @@
<?php if (!empty($Yangon)) {?> <?php if (!empty($Yangon)) {?>
<?php foreach ($Yangon as $index => $feedback) {?> <?php foreach ($Yangon as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?><div class="more_tours"><a href="/reviews/myanmar">More Myanmar reviews</a></div> <?php }?><div class="more_tours"><a href="/reviews/myanmar">More Myanmar reviews</a></div>
<?php }?> <?php }?>
@ -90,10 +81,11 @@
<?php if (!empty($Beijing)) {?> <?php if (!empty($Beijing)) {?>
<?php foreach ($Beijing as $index => $feedback) {?> <?php foreach ($Beijing as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto; margin-bottom: 15px;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height: auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <div class="more_tours"><a href="/reviews/china">More China reviews</a></div> <?php }?> <div class="more_tours"><a href="/reviews/china">More China reviews</a></div>
<?php }?> <?php }?>

@ -1,37 +1,29 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;"><a href="https://www.chinahighlights.com/" target="blank">China Highlights</a>, Asia Highlights, and <a href="https://www.globalhighlights.com/" target="blank">Global Highlights</a> collaborate to provide families and couples with personalized and stress-free experiences in diverse destinations.</p> <p style="text-align: center;margin-top: 80px;margin-bottom: 0;clear:both;">Discover real reviews of <a href="/about-us/highlights-travel-family">Highlights Travel Family</a>'s best-rated service across trusted platforms. </p>
<div class="visible-xs" style="margin: 20px 20px 90px 20px; "> <div class="visible-xs" style="margin: 20px 20px 90px 20px; ">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="float: left; width: 150px; margin: 0 auto; <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="float: left; width: 150px; margin: 0 auto; display: block;" width="175" alt="Trip Advisor certificate of excellence 2024">
display: block;" width="175"> <img height="40" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 120px; height: auto; display: block; float: right;" width="211" alt="tour rating">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; display: block;
float: right;" width="211">
</div> </div>
<div class="table-responsive" style="margin-bottom: 20px;"> <div class="table-responsive" style="margin-bottom: 20px;" rel="nofollow">
<table> <table style="width: max-content;">
<tbody> <tbody>
<tr> <tr>
<td class="hidden-xs"> <td class="hidden-xs feedback_logo">
<div class="feedback_logo"> <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="margin: 0px auto; " width="175" alt="Trip Advisor certificate of excellence 2024"> <img alt="Tour Review" class="img-responsive" height="278" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="margin: 0px auto; " width="175"> <img alt="Tour Review" class="img-responsive" height="278" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div>
</td> </td>
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
<td> <td class="tour_feedback feedback_content">
<div class="tour_feedback">
<div class="feedback_content">
<strong> <strong>
<?php echo $feedback['title'] ?> <?php echo $feedback['title'] ?>
</strong> </strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="tour rating">
<p> <p>
<?php echo $feedback['content'] ?> <?php echo $feedback['content'] ?>
</p> </p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"> <div class="customer_name">
<?php echo $feedback['customer'] ?>, <?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
<?php echo $feedback['createdOn'] ?> </div>
</div>
</div>
</div>
</td> </td>
<?php }?> <?php }?>
</tr> </tr>

@ -0,0 +1,29 @@
<div class="right_tour">
<div class="feedback_logo" style="width: auto; display: flex;">
<img height="65" style="margin: 0px auto; " width="150"
src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" alt="Trip Advisor certificate of excellence 2024"/>
<img alt="Tour rating" class="img-responsive" height="278"
style="width: 140px; display: block; margin: 0 auto; " width="1133"
src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" />
</div>
<p style="text-align: center;
margin-top: 10px;
margin-bottom: 0;
font-size: 18px;
line-height: 21px;">Discover real reviews of <a href="/about-us/highlights-travel-family">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
<?php foreach ($feedback_list as $index => $feedback) {?>
<div class="tour_feedback" style="width: auto; height: auto;">
<div class="feedback_content">
<strong style="height: auto;"><?php echo $feedback['title'] ?></strong>
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" alt="tour rating"></p>
<p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">more</a>
<div class="customer_name">
<?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
</div>
</div>
</div>
<?php }?>
<p style="margin-top: 20px;"><a href="/reviews">More reviews</a></p>
</div>

@ -1,19 +1,19 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;"><a href="https://www.chinahighlights.com/" target="blank">China Highlights</a>, Asia Highlights, and <a href="https://www.globalhighlights.com/" target="blank">Global Highlights</a> collaborate to provide families and couples with personalized and stress-free experiences in diverse destinations.</p> <p style="text-align: center;margin-top: 80px;margin-bottom: 0;clear:both;">Discover real reviews of <a href="/about-us/highlights-travel-family">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
<div class="visible-xs" style="margin: 20px 20px 90px 20px; "> <div class="visible-xs" style="margin: 20px 20px 90px 20px; ">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="float: left; width: 150px; margin: 0 auto; <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="float: left; width: 150px; margin: 0 auto;
display: block;" width="175"> display: block;" width="175" alt="Trip Advisor certificate of excellence 2024">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; display: block; <img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; display: block;
float: right;" width="211"> float: right;" width="211" alt="tour rating">
</div> </div>
<div class="table-responsive" style="margin-bottom: 20px;"> <div class="table-responsive" style="margin-bottom: 20px;" rel="nofollow">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td class="hidden-xs"> <td class="hidden-xs">
<div class="feedback_logo"> <div class="feedback_logo">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="margin: 0px auto; " width="175"> <img alt="Tour Review" class="img-responsive" height="278" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div> <img class="img-responsive" height="69" src="https://images.asiahighlights.com/allpicture/2024/04/b3e0271ca0874b7cb0342ea6f2987723_cut_175x68_241.jpg" style="margin: 0px auto; " width="175" alt="Trip Advisor certificate of excellence 2023"> <img alt="Tour Review" class="img-responsive" height="278" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div>
</td> </td>
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
<td> <td>
@ -22,13 +22,13 @@
<strong> <strong>
<?php echo $feedback['title'] ?> <?php echo $feedback['title'] ?>
</strong> </strong>
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" alt="tour rating"></p>
<p> <p>
<?php echo $feedback['content'] ?> <?php echo $feedback['content'] ?>
</p> </p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"> <div class="customer_name">
<?php echo $feedback['customer'] ?>, <?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
<?php echo $feedback['createdOn'] ?>
</div> </div>
</div> </div>

@ -0,0 +1,25 @@
<img class="img-responsive" height="69" src="https://images.asiahighlights.com/allpicture/2024/04/b3e0271ca0874b7cb0342ea6f2987723_cut_175x68_241.jpg" style="float: left; width: 150px; margin: 0 auto;
display: block;" width="175">
<img height="40" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 120px; height: auto; display: block;
float: right;" width="211">
<?php foreach ($feedback_list as $index => $feedback) {?>
<div class="tour_feedback_right">
<div class="feedback_content_right">
<strong>
<?php echo $feedback['title'] ?>
</strong>
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>"></p>
<p>
<?php echo $feedback['content'] ?>
</p>
<a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name">
<?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
</div>
</div>
</div>
<?php }?>

@ -12,18 +12,21 @@
Adults and kids (≥10 years old) Adults and kids (≥10 years old)
</p> </p>
<div class="numberBtn"> <div class="numberBtn">
<input class="minaddBtn reduceadult" id="minusAdult" type="button" value="-"> <input class="minaddBtn reduceadult" id="minusAdult" type="button" value="-" style="width: 50px !important;">
<input class="number" type="text" id="adultNumber" readonly value="1" name="adult"> <input class="number" type="text" id="adultNumber" readonly value="1" name="adult" style="width: 70px !important;
<input class="minaddBtn addadult" id="plusAdult" type="button" value="+"> text-align: center;
position: relative;
top: -7px;">
<input class="minaddBtn addadult" id="plusAdult" type="button" value="+" style="width: 50px !important;">
</div> </div>
</div> </div>
</div> </div>
<div id="childrenBlock" > <div id="childrenBlock" >
<p style="font-size: 20px;margin-bottom: 10px;"><strong>Children</strong></p> <p style="font-size: 20px;margin-bottom: 10px;"><strong>Children</strong></p>
<div class="kids_age"> <div class="kids_age" style="width: 30%;">
<p style="margin-bottom: 5px;">3-9 yrs old</p> <p style="margin-bottom: 5px;">3-9 yrs old</p>
<select class="kids_number" id="childrenNumber" name="children_3_9_yrs"> <select class="kids_number" id="childrenNumber" name="children_3_9_yrs" style="width: 55%;">
<option value="0">0 <option value="0">0
</option> </option>
<option value="1">1 <option value="1">1
@ -37,9 +40,9 @@
</option> </option>
</select> </select>
</div> </div>
<div class="kids_age"> <div class="kids_age" style="width: 30%;">
<p style="margin-bottom: 5px;">0-2 yrs old</p> <p style="margin-bottom: 5px;">0-2 yrs old</p>
<select class="kids_number" id="infantNumber" name="infant_0_2_yrs"> <select class="kids_number" id="infantNumber" name="infant_0_2_yrs" style="width: 55%;">
<option value="0">0 <option value="0">0
</option> </option>
<option value="1">1 <option value="1">1
@ -328,7 +331,7 @@
margin-top: 0; margin-top: 0;
margin-bottom: 10px; margin-bottom: 10px;
padding: 0; padding: 0;
">I prefer to be contacted via:</p> ">I am also available on:</p>
<div class="checkYes"> <div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" >
@ -338,32 +341,13 @@
<input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" >
<label for="iMessage">iMessage</label> <label for="iMessage">iMessage</label>
</div> </div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_phone_call" id="Phone" class="checkBorder" >
<label for="Phone">Phone call</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_email" id="Email" class="checkBorder" >
<label for="Email">Email</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_video_appointment" id="Video" class="checkBorder" >
<label for="Video">Video appointment</label>
</div>
<button class="sendButton" id="submit_gp_form" type="button">Inquire Now</button> <button class="sendButton" id="submit_gp_form" type="button">Inquire Now</button>
<input name="payment_required" id="payment_required" type="hidden" value="" /> <input name="payment_required" id="payment_required" type="hidden" value="" />
<input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/>
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" /> <input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
</form> </form>
<!-- <h3 style="text-align: center;
font-size: 20px;
line-height: 22px;">For a quick conversation, simply reach us via WhatsApp:</h3>
<div class="contactwechat"><img alt="Asia Highlights' wechat code" height="100px" src="https://data.asiahighlights.com/image/about/asia-highlights-whatsapp-code.jpg" width="100px" >
<div class="wechatinfo"><span class="wechatred">+8615807734776</span><br>
Email: <span class="wechatred">contact@asiahighlights.com</span></div>
</div>
-->
</div> </div>
<script> <script>

@ -1,11 +1,5 @@
<div class=topcontent> <div class=topcontent>
<div class="infotopimage"> <div class="infotopimage">
<?php if (!empty($meta_news_video) && !empty($meta_video_picture)) { ?>
<video autoplay="" controls="controls" id="bgvid" poster="<?php echo $meta_video_picture; ?>" src="<?php echo $meta_news_video; ?>" style="position: inherit;"> </video>
<?php }else{ ?>
<img src="<?php echo $meta_addon_picture; ?>"
alt="<?php echo !empty($information->ic_title)?$information->ic_title:'H1 title asiahighlights mobile first template'; ?>" class="img-responsive">
<?php } ?>
<div class="topbannerbg"> <div class="topbannerbg">
<div class="infocategory"> <div class="infocategory">
<a href="/" data-count="<?php echo count($breadcrumb_data) ?>">Home</a> <a href="/" data-count="<?php echo count($breadcrumb_data) ?>">Home</a>
@ -13,33 +7,44 @@
<a href="<?php echo $item['ic_url'] ?>" data-index="<?php echo $index ?>" data-is-id="<?php echo $item['is_id'] ?>"><?php echo $item['ic_url_title'] ?></a> <a href="<?php echo $item['ic_url'] ?>" data-index="<?php echo $index ?>" data-is-id="<?php echo $item['is_id'] ?>"><?php echo $item['ic_url_title'] ?></a>
<?php }?> <?php }?>
<div class="top_banner_tp"> <div class="top_banner_tp">
<img src="https://data.asiahighlights.com/image/forms/ah-top-banner-tp-rating.png" alt="Asia Highlights TrustPilot rating" class="img-responsive"> <img src="https://images.asiahighlights.com/allpicture/2024/04/162495e225c5441eadcee119fa971806_cut_200x200_241.jpg" alt="Asia Highlights TrustPilot rating" class="img-responsive hidden-xs">
</div> </div>
</div> </div>
<div class="infotoptitle"> <div class="infotoptitle">
<h1 class="whitefont"><?php echo !empty($information->ic_title)?$information->ic_title:'H1 title asiahighlights mobile first template'; ?></h1> <h1 class="whitefont"><?php echo !empty($information->ic_title)?$information->ic_title:'H1 title asiahighlights mobile first template'; ?></h1>
<div class="authorupdate">By <strong><?php echo !empty($author)?$author:''; ?></strong>Updated <?php echo date("M. j, Y",strtotime($information->ic_datetime)); ?></div>
<?php
$OPI_CodeUrls = [
'zzy' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
'2' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
'HWT' => 'https://www.globalhighlights.com/aboutus/team/mike-he',
'CA' => 'https://www.globalhighlights.com/aboutus/team/carol-wang',
'SI' => 'https://www.globalhighlights.com/aboutus/team/simon-huang',
'TJQ' => 'https://www.globalhighlights.com/aboutus/team/cindy-tang',
'CLA' => 'https://www.globalhighlights.com/aboutus/team/claire-wang',
'Albee' => 'https://www.globalhighlights.com/aboutus/team/albee-ning',
'KM' => 'https://www.globalhighlights.com/aboutus/team/kimi-huang',
'RY' => 'https://www.globalhighlights.com/aboutus/team/rita-yu',
'QMY' => 'https://www.globalhighlights.com/aboutus/team/chris-quan',
'CY' => 'https://www.globalhighlights.com/aboutus/team/cynthia-li',
'Vicky' => 'https://www.globalhighlights.com/aboutus/team/vicky-leng',
'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li',
'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
];
$OPI_Code = empty($OPI_Code) ? '' : $OPI_Code;
if (!empty($meta_news_createdate)) {?>
<div class="authorupdate">
Written by
<?php if (array_key_exists($OPI_Code, $OPI_CodeUrls)) {?>
<strong><a href="<?php echo $OPI_CodeUrls[$OPI_Code]; ?>" target="_blank"><?php echo $author; ?></a></strong>
<?php } else { ?>
<strong><?php echo $author; ?></strong>
<?php }?>
Updated <?php echo date("M. j, Y", strtotime($meta_news_createdate)); ?>
</div>
<?php } ?>
</div> </div>
</div> </div>
</div> </div>
<?php if ($ads_by_google) { ?>
<style>
#adsense-head-ads {
height: 427px;
min-height: 427px;
background: url(https://data.viaggio-in-cina.it/information-view/information/img/adsense.gif) center center no-repeat;
}
@media screen and (max-width: 767px) {
#adsense-head-ads {
height: 320px;
min-height: 320px;
}
}
</style>
<ins id="adsense-head-ads" class="adsbygoogle" style="display:block" data-ad-client="ca-pub-4231674166786366" data-ad-slot="1166484387" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4231674166786366"
crossorigin="anonymous"></script>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
<?php } ?>
</div> </div>

@ -8,135 +8,128 @@
<form action="/orders/quick_inquiry_save" method="post" novalidate="" id="info_page_form"> <form action="/orders/quick_inquiry_save" method="post" novalidate="" id="info_page_form">
<textarea id="form_additionalrequirements" name="additional_requirements" placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..." style="height:90px;"></textarea> <textarea id="form_additionalrequirements" name="additional_requirements" placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..." style="height:90px;"></textarea>
<div class="selectionBlock" style="margin-bottom: 0;"> <div class="selectionBlock">
<p style=" <h4 style="margin-bottom: 0;margin-top: 0; padding-bottom: 0;">
margin-bottom: 0px; How would you travel?
"> </h4>
<strong>Number in your group</strong> <div id="group_error_msg" style="display: none">
</p> <div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div>
<div id="group_error_msg" style="display: none"> </div>
<div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div> <div class="travel_group">
</div> <input type="radio" value="Family" id="Family" name="travel_group">
<div class="travel_group"> <label for="Family" class="family">
<input type="radio" value="Family" id="Family" name="travel_group"> Family
<label for="Family" class="family"> </label>
Family </div>
</label> <div class="travel_group">
</div> <input type="radio" value="Couple" id="Couple" name="travel_group">
<div class="travel_group"> <label for="Couple" class="couple">
<input type="radio" value="Couple" id="Couple" name="travel_group"> Couple
<label for="Couple" class="couple"> </label>
Couple </div>
</label> <div class="travel_group">
</div> <input type="radio" value="Solo" id="Solo" name="travel_group">
<div class="travel_group"> <label for="Solo" class="solo">
<input type="radio" value="Solo" id="Solo" name="travel_group"> Solo
<label for="Solo" class="solo"> </label>
Solo </div>
</label> <div class="travel_group">
</div> <input type="radio" value="group" id="Other" name="travel_group">
<div class="travel_group"> <label for="Other" class="group">
<input type="radio" value="group" id="Other" name="travel_group"> Other group
<label for="Other" class="group"> </label>
Other group </div>
</label>
</div> <div id="adultBlock" style="display: none">
<p style="margin-top: 0;margin-bottom: 0;"><strong>Adults number (age ≥ 18 years old)</strong></p>
<div id="adultBlock" style="display: none"> <div class="kids_age">
<select class="kids_number" id="adult_18_plus" name="adult_18_plus" >
<div class="peopleSelect"> <option value="0">0</option>
<p style=" margin-top: 10px; <option value="1">1</option>
margin-bottom: 10px;"><strong> <option value="2">2</option>
Adults (≥18 years old) <option value="3">3</option>
</strong> </p> <option value="4">4</option>
<button class="minaddBtn reduceadult" id="minusAdult" type="button" <option value="5">5</option>
value="-">-</button> <option value="6">6</option>
<input class="number" type="text" value="2" id="adultNumber" name="adult"> <option value="7">7</option>
<button class="minaddBtn addadult" type="button" id="plusAdult" value="+">+</button> <option value="8">8</option>
</div> <option value="9">9</option>
<div class="age_range"> <option value="10">10</option>
<p> <option value="11">11</option>
Adults' ages <option value="12">12</option>
</p> <option value="13">13</option>
<div class="checkYes" style="float:left;"> <option value="14">14</option>
<label for="65+"> <option value="15">15</option>
<input type="checkbox" value="yes" name="age_65_plus" id="65+" class="checkBorder" >65+ <option value="16">16</option>
</label> <option value="17">17</option>
</div> <option value="18">18</option>
<div class="checkYes" style="float:left;"> <option value="19">19</option>
<label for="51-64"> <option value="20">20</option>
<input type="checkbox" value="yes" name="age_51_64" id="51-64" class="checkBorder" >51-64 <option value="21">21</option>
</label> <option value="22">22</option>
</div> <option value="23">23</option>
<div class="checkYes" style="float:left;"> <option value="24">24</option>
<label for="41-50"> <option value="25">25</option>
<input type="checkbox" value="yes" name="age_41_50" id="41-50" class="checkBorder" >41-50 <option value="26">26</option>
</label> <option value="27">27</option>
</div> <option value="28">28</option>
<div class="checkYes" style="float:left;"> <option value="29">29</option>
<label for="31-40"> <option value="30">30</option>
<input type="checkbox" value="yes" name="age_31_40" id="31-40" class="checkBorder" >31-40 </select>
</label> <p style="
</div> margin-top: 5px;font-size: 18px;
<div class="checkYes" style="float:left;"> ">people</p>
<label for="18-30"> </div>
<input type="checkbox" value="yes" name="age_18_30" id="18-30" class="checkBorder" >18-30
</label> </div>
</div> <div class="clear"></div>
</div> <div id="childrenBlock" style="display: none">
</div> <p style="margin-top: 0;margin-bottom: 0;"><strong>Children number</strong></p>
<div class="clear"></div> <div class="kids_age">
<div id="childrenBlock" style="display: none"> <p style="margin-bottom: 5px;">10-17 yrs old</p>
<p style=" margin-top: -10px; margin-bottom: 5px;"><strong>Children (age of children at time of trip)</strong></p> <select class="kids_number" id="teenagerNumber" name="teenager_10_17">
<div class="kids_age"> <option value="0">0</option>
<p style="margin-bottom: 5px;">10-17 yrs old</p> <option value="1">1</option>
<select class="kids_number" id="teenagerNumber" name="teenager_10_17_yrs"> <option value="2">2</option>
<option value="0">0 <option value="3">3</option>
</option> <option value="4">4</option>
<option value="1">1 <option value="5">5</option>
</option> </select>
<option value="2">2 <p style="
</option> margin-top: 10px;font-size: 18px;
<option value="3">3 ">people</p>
</option> </div>
<option value="4">4 <div class="kids_age">
</option> <p style="margin-bottom: 5px;">3-9 yrs old</p>
</select> <select class="kids_number" id="childrenNumber" name="children_3_9">
</div> <option value="0">0</option>
<div class="kids_age"> <option value="1">1</option>
<p style="margin-bottom: 5px;">3-9 yrs old</p> <option value="2">2</option>
<select class="kids_number" id="childrenNumber" name="children_3_9_yrs"> <option value="3">3</option>
<option value="0">0 <option value="4">4</option>
</option> <option value="5">5</option>
<option value="1">1 </select>
</option> <p style="
margin-top: 10px;font-size: 18px;
<option value="2">2 ">people</p>
</option> </div>
<option value="3">3 <div class="kids_age">
</option> <p style="margin-bottom: 5px;">0-2 yrs old</p>
<option value="4">4 <select class="kids_number" id="infantNumber" name="infant_0_2">
</option> <option value="0">0</option>
</select> <option value="1">1</option>
</div> <option value="2">2</option>
<div class="kids_age"> <option value="3">3</option>
<p style="margin-bottom: 5px;">0-2 yrs old</p> <option value="4">4</option>
<select class="kids_number" id="infantNumber" name="infant_0_2_yrs"> <option value="5">5</option>
<option value="0">0 </select>
</option> <p style="
<option value="1">1 margin-top: 10px;font-size: 18px;
</option> ">people</p>
<option value="2">2 </div>
</option> </div>
<option value="3">3
</option> </div>
<option value="4">4
</option>
</select>
</div>
</div>
</div>
<div class="selectionBlock" style="margin-bottom: 10px;"> <div class="selectionBlock" style="margin-bottom: 10px;">
<p style=" margin-top: 10px; <p style=" margin-top: 10px;
@ -147,41 +140,79 @@
<div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div> <div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div>
</div> </div>
<div class="travel_group date_select" > <div class="travel_group date_select" >
<input type="radio" value="exact travel dates" id="exact" name="trip_date"> <input type="radio" value="exact dates" id="exact" name="trip_date">
<label for="exact" class="updatedestination" style="font-size: 18px;"> <label for="exact" class="updatedestination" style="font-size: 18px;">
Exact travel dates Exact dates
</label> </label>
</div> </div>
<div class="travel_group date_select" > <div class="travel_group date_select" >
<input type="radio" value="approximate travel dates" id="approximate" name="trip_date"> <input type="radio" value="approximate dates" id="approximate" name="trip_date">
<label for="approximate" class="updatedestination" style="font-size: 18px;"> <label for="approximate" class="updatedestination" style="font-size: 18px;">
Approximate travel dates Approximate dates
</label> </label>
</div> </div>
<div class="travel_group date_select" > <div class="travel_group date_select" >
<input type="radio" value="haven't decided travel dates" id="yet" name="trip_date"> <input type="radio" value="Undecided dates" id="yet" name="trip_date">
<label for="yet" class="updatedestination" style="font-size: 18px;"> <label for="yet" class="updatedestination" style="font-size: 18px;">
Not decided travel dates Undecided dates
</label> </label>
</div> </div>
<div class="trip_date_length" id="tripDateBlock" style="display: none"> <div class="trip_date_length" id="tripDateBlock" style="display: none">
<p style="margin-bottom: 10px;">Select your travel date and trip length (days).</p>
<div id='dateSelectionBlock'> <div id='dateSelectionBlock'>
<input type="text" class="arrivalDate datepicker" id="starting_date" name="date_start" value="" placeholder="mm/dd/yyyy" autocomplete="off" style="width: auto; float: left; margin-right: 15px; height: 30px; <div id='date_start_block'>
margin-top: 5px;"> <input type="text" class="arrivalDate datepicker" id="starting_date" name="date_start" value="" placeholder="Select your exact travel date." autocomplete="off" style="width: auto; float: left; margin-right: 15px; height: 30px;
<input type="month" id="expectedMonth" name="expected_month" placeholder="Select your expected travel date." style="width: auto; float: left; margin-right: 15px;height: 30px;
margin-top: 5px;"> margin-top: 5px;">
</div> </div>
<div class="peopleSelect"> <select class="country_code" id="expectedMonth" name="expected_month" style="margin-top: 15px;">
<div class="numberBtn"> <option value="" disabled selected>Select your approximate travel date.</option>
<input class="minaddBtn" id="tripLengthMinus" type="button" value="-">
<input class="number" type="text" value="14" id="tripLengthNumber" name="trip_length"> <option value="Mar. 2024">Mar. 2024</option>
<input class="minaddBtn" id="tripLengthPlus" type="button" value="+"> <option value="Apr. 2024">Apr. 2024</option>
</div> <option value="May. 2024">May. 2024</option>
</div> <option value="Jun. 2024">Jun. 2024</option>
<option value="Jul. 2024">Jul. 2024</option>
<option value="Aug. 2024">Aug. 2024</option>
<option value="Sep. 2024">Sep. 2024</option>
<option value="Oct. 2024">Oct. 2024</option>
<option value="Nov. 2024">Nov. 2024</option>
<option value="Dec. 2024">Dec. 2024</option>
<option value="Jan. 2025">Jan. 2025</option>
<option value="Feb. 2025">Feb. 2025</option>
<option value="Mar. 2025">Mar. 2025</option>
<option value="Apr. 2025">Apr. 2025</option>
<option value="May. 2025">May. 2025</option>
<option value="Jun. 2025">Jun. 2025</option>
<option value="Jul. 2025">Jul. 2025</option>
<option value="Aug. 2025">Aug. 2025</option>
<option value="Sep. 2025">Sep. 2025</option>
<option value="Oct. 2025">Oct. 2025</option>
<option value="Nov. 2025">Nov. 2025</option>
<option value="Dec. 2025">Dec. 2025</option>
<option value="Jan. 2026">Jan. 2026</option>
<option value="Feb. 2026">Feb. 2026</option>
<option value="Mar. 2026">Mar. 2026</option>
<option value="Apr. 2026">Apr. 2026</option>
<option value="May. 2026">May. 2026</option>
<option value="Jun. 2026">Jun. 2026</option>
<option value="Jul. 2026">Jul. 2026</option>
<option value="Aug. 2026">Aug. 2026</option>
<option value="Sep. 2026">Sep. 2026</option>
<option value="Oct. 2026">Oct. 2026</option>
<option value="Nov. 2026">Nov. 2026</option>
<option value="Dec. 2026">Dec. 2026</option>
<option value="Jan. 2027">Jan. 2027</option>
<option value="Feb. 2027">Feb. 2027</option>
<option value="Mar. 2027">Mar. 2027</option>
<option value="Apr. 2027">Apr. 2027</option>
</select>
</div>
</div> </div>
</div> </div>
<input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" /> <input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" />
@ -192,7 +223,7 @@
<div id="email_errmsg" style="display: none"> <div id="email_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your email</div> <div class="requiredArea" style="margin-top:-10px;">Please enter your email</div>
</div> </div>
<div id="email_verify_errmsg" style="display: none"> <div id="email_verify_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please verify your email</div> <div class="requiredArea" style="margin-top:-10px;">Please verify your email</div>
</div> </div>
@ -454,7 +485,7 @@
<div id="contact_errmsg" style="display: none"> <div id="contact_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div> </div> <div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div> </div>
<p style="margin-top: 0;margin-bottom: 5px;padding: 0;">I prefer to be contacted via:</p> <p style="margin-top: 0;margin-bottom: 5px;padding: 0;">I am also available on:</p>
<div class="checkYes"> <div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" >
<label for="whatsapp">WhatsApp</label> <label for="whatsapp">WhatsApp</label>
@ -463,38 +494,18 @@
<input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" >
<label for="iMessage">iMessage</label> <label for="iMessage">iMessage</label>
</div> </div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_phone_call" id="Phone" class="checkBorder" > <button class="sendButton" id="info_page_button" name="booking_form_inquiry_list" type="button">Inquire Now</button> <input name="product_code" type="hidden" value="YDFW-AH"/>
<label for="Phone">Phone call</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_email" id="Email" class="checkBorder" >
<label for="Email">Email</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_video_appointment" id="Video" class="checkBorder" >
<label for="Video">Video appointment</label>
</div>
<button class="sendButton" id="info_page_button" name="booking_form_inquiry_list" type="button">Inquire Now</button> <input name="product_code" type="hidden" value="YDFW-AH"/>
<input name="ic_title" type="hidden" value="YDFW-AH" /> <input name="ic_title" type="hidden" value="YDFW-AH" />
</form> </form>
<!--
<h3 style="text-align: center; font-size: 20px; line-height: 22px;">For a quick conversation, simply reach us via WhatsApp:</h3>
<div class="contactwechat"><img alt="asia highlights' wechat code" height="100px" src="https://data.asiahighlights.com/image/about/asia-highlights-whatsapp-code.jpg" width="100px" />
<div class="wechatinfo"><span class="wechatred">+8615807734776</span><br />
Email: <span class="wechatred">contact@asiahighlights.com</span></div>
</div>
-->
</div> </div>
</div> </div>
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script> <script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script> <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script>
<script> <script>
var selectedExpectedDate = ''; var selectedExpectedDate = '';
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
flatpickr("#starting_date", { flatpickr("#starting_date", {
@ -504,10 +515,10 @@
disableMobile: true, disableMobile: true,
minDate: "today" minDate: "today"
}); });
var quick_inquiry_button = document.getElementById("info_page_button"); var quick_inquiry_button = document.getElementById("info_page_button");
var quick_inquiry_form = document.getElementById("info_page_form"); var quick_inquiry_form = document.getElementById("info_page_form");
quick_inquiry_button.addEventListener('click', function(event) { quick_inquiry_button.addEventListener('click', function(event) {
var validateResult = validateQuickInquiryForm(); var validateResult = validateQuickInquiryForm();
if (validateResult) { if (validateResult) {
@ -526,10 +537,10 @@
quick_inquiry_button.innerText = "Submitted successfully"; quick_inquiry_button.innerText = "Submitted successfully";
}); });
} }
} }
}); });
}); });
function validateQuickInquiryForm() { function validateQuickInquiryForm() {
var result = true; var result = true;
var realnameVal = document.getElementById("realname").value; var realnameVal = document.getElementById("realname").value;
@ -537,33 +548,33 @@
var expectedDateVal = document.getElementById("starting_date").value; var expectedDateVal = document.getElementById("starting_date").value;
var expectedMonthVal = document.getElementById("expectedMonth").value; var expectedMonthVal = document.getElementById("expectedMonth").value;
var contactVal = document.getElementById("PhoneNo").value; var contactVal = document.getElementById("PhoneNo").value;
var realnameErrEl = document.getElementById("realname_errmsg"); var realnameErrEl = document.getElementById("realname_errmsg");
var emailErrEl = document.getElementById("email_errmsg"); var emailErrEl = document.getElementById("email_errmsg");
var emailVerifyErrEl = document.getElementById("email_verify_errmsg"); var emailVerifyErrEl = document.getElementById("email_verify_errmsg");
var startingDateErrEl = document.getElementById("date_error_msg"); var startingDateErrEl = document.getElementById("date_error_msg");
var contactErrEl = document.getElementById("contact_errmsg"); var contactErrEl = document.getElementById("contact_errmsg");
var groupErrEl = document.getElementById("group_error_msg"); var groupErrEl = document.getElementById("group_error_msg");
realnameErrEl.style.display = 'none'; realnameErrEl.style.display = 'none';
emailErrEl.style.display = 'none'; emailErrEl.style.display = 'none';
emailVerifyErrEl.style.display = 'none'; emailVerifyErrEl.style.display = 'none';
startingDateErrEl.style.display = 'none'; startingDateErrEl.style.display = 'none';
contactErrEl.style.display = 'none'; contactErrEl.style.display = 'none';
groupErrEl.style.display = 'none'; groupErrEl.style.display = 'none';
var travel_group_is_checked = false; var travel_group_is_checked = false;
document.querySelectorAll('input[name="travel_group"]').forEach(function(groupNode) { document.querySelectorAll('input[name="travel_group"]').forEach(function(groupNode) {
if (groupNode.checked) { if (groupNode.checked) {
travel_group_is_checked = true; travel_group_is_checked = true;
} }
}); });
if (travel_group_is_checked === false) { if (travel_group_is_checked === false) {
groupErrEl.style.display = ''; groupErrEl.style.display = '';
result = false; result = false;
} }
var tripDate_is_checked = false; var tripDate_is_checked = false;
if (selectedExpectedDate === 'exact') { if (selectedExpectedDate === 'exact') {
tripDate_is_checked = expectedDateVal !== ''; tripDate_is_checked = expectedDateVal !== '';
@ -572,13 +583,13 @@
} else if (selectedExpectedDate === 'yet') { } else if (selectedExpectedDate === 'yet') {
tripDate_is_checked = true; tripDate_is_checked = true;
} }
//时间选择 //时间选择
if (!tripDate_is_checked) { if (!tripDate_is_checked) {
startingDateErrEl.style.display = ''; startingDateErrEl.style.display = '';
result = false; result = false;
} }
if (realnameVal === '') { if (realnameVal === '') {
realnameErrEl.style.display = ''; realnameErrEl.style.display = '';
result = false; result = false;
@ -601,25 +612,13 @@
} }
</script> </script>
<script> <script>
$(function () { $(function () {
var $adultBlock = $('#adultBlock'); var $adultBlock = $('#adultBlock');
var $childrenBlock = $('#childrenBlock'); var $childrenBlock = $('#childrenBlock');
var $adultNumberInput = $('#adultNumber');
var adultNumber = $adultNumberInput.val();
var $teenagerNumberInput = $('#teenagerNumber');
var teenagerNumber = $teenagerNumberInput.val();
var $childrenNumberInput = $('#childrenNumber');
var childrenNumber = $childrenNumberInput.val();
var $infantNumberInput = $('#infantNumber');
var infantNumber = $infantNumberInput.val();
$('input[name="travel_group"]').each((i, groupEle) => { $('input[name="travel_group"]').each((i, groupEle) => {
$(groupEle).click(function (e) { $(groupEle).click(function (e) {
$teenagerNumberInput.val(0);
$childrenNumberInput.val(0);
$infantNumberInput.val(0);
var currentTarget = e.currentTarget; var currentTarget = e.currentTarget;
if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) { if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) {
$adultBlock.show(); $adultBlock.show();
@ -629,15 +628,15 @@
$childrenBlock.hide(); $childrenBlock.hide();
} }
if (currentTarget.id === 'Couple') { if (currentTarget.id === 'Couple') {
$adultNumberInput.val(2); $('#adult_18_plus').val('2');
} else if (currentTarget.id === 'Solo') { } else if (currentTarget.id === 'Solo') {
$adultNumberInput.val(1); $('#adult_18_plus').val('1');
} }
}) })
}); });
var $tripDateBlock = $('#tripDateBlock'); var $tripDateBlock = $('#tripDateBlock');
var $expectedDate = $('#starting_date'); var $expectedDate = $('#date_start_block');
var $expectedMonth = $('#expectedMonth'); var $expectedMonth = $('#expectedMonth');
var $dateSelectionBlock = $('#dateSelectionBlock'); var $dateSelectionBlock = $('#dateSelectionBlock');
var $expectedTravelDateBlock = $('#expectedTravelDateBlock'); var $expectedTravelDateBlock = $('#expectedTravelDateBlock');
@ -666,53 +665,6 @@
}); });
var tripLength = $('#tripLengthNumber').val(); var tripLength = $('#tripLengthNumber').val();
//成人
$('#plusAdult').click(function () {
adultNumber++;
$adultNumberInput.val(adultNumber);
});
$('#minusAdult').click(function () {
if (adultNumber > 1) {
adultNumber--;
$adultNumberInput.val(adultNumber);
}
});
// 青少年
$('#plusTeenager').click(function () {
teenagerNumber++;
$teenagerNumberInput.val(teenagerNumber);
});
$('#minusTeenager').click(function () {
if (teenagerNumber > 0) {
teenagerNumber--;
$teenagerNumberInput.val(teenagerNumber);
}
});
// 儿童
$('#plusChildren').click(function () {
childrenNumber++;
$childrenNumberInput.val(childrenNumber);
});
$('#minusChildren').click(function () {
if (childrenNumber > 0) {
childrenNumber--;
$childrenNumberInput.val(childrenNumber);
}
});
// 婴儿
$('#plusInfant').click(function () {
infantNumber++;
$infantNumberInput.val(infantNumber);
});
$('#minusInfant').click(function () {
if (infantNumber > 0) {
infantNumber--;
$infantNumberInput.val(infantNumber);
}
});
// Trip Length // Trip Length
$('#tripLengthPlus').click(function () { $('#tripLengthPlus').click(function () {
@ -730,7 +682,7 @@
</script> </script>
<script> <script>
// 折叠展开 // 折叠展开
document.querySelectorAll('div[collapse]').forEach(function ($collapseDiv, index) { document.querySelectorAll('div[collapse]').forEach(function ($collapseDiv, index) {
$collapseDiv.onclick = function (e) { $collapseDiv.onclick = function (e) {
let collapseStatus = $collapseDiv.getAttribute('collapse-status'); let collapseStatus = $collapseDiv.getAttribute('collapse-status');
@ -807,7 +759,7 @@
target.style.removeProperty('transition-property'); target.style.removeProperty('transition-property');
}, duration); }, duration);
} }
function slideDown(target, duration) { function slideDown(target, duration) {
duration = duration ? duration : 500; duration = duration ? duration : 500;
target.style.removeProperty('display'); target.style.removeProperty('display');
@ -839,11 +791,28 @@
}, duration); }, duration);
} }
</script> </script>
<script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/jquery.mailAutoComplete-4.0.min.js"></script>
<style> <style>
.date_select {width: 27.5% !important; margin-bottom: 10px;} .date_select {width: 31% !important; margin-bottom: 10px;}
.age_range { margin-top: 45px;} .age_range { margin-top: 45px;}
@media (max-width: 750px){ @media (max-width: 750px){
.date_select {width: 93% !important; margin-bottom: 0 !important;} .date_select {width: 47% !important;}
.age_range { margin-top: 0;} .date_select label {font-size:17px !important;}
} }
</style> </style>
<style type="text/css">
.emailist{border:1px solid #bdbdbd; border-radius: 4px; background-color:#fff; color:#666; font-size:14px; list-style-type:0; padding:0; margin:0; overflow:hidden;}
.emailist li{ padding: 2px 11px;
cursor: pointer;
font-size: 18px;
text-shadow: none;
color: #000;
}
.emailist .on, .emailist li:hover{background-color:#eee;}
</style>
<script>
$("#email").mailAutoComplete({
email: ['gmail.com','outlook.com','yahoo.com','icloud.com','hotmail.com','live.com','aol.com']
});
</script>

@ -1,139 +1,131 @@
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script> <script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<div class="tmbottom"> <div class="tmbottom">
<h3 style="text-align: center; font-size: 20px; line-height: 22px;">Inquire now! Your 1:1 travel consultant will reply within 1 working day.</h3> <h3 style="text-align: center; font-size: 20px; line-height: 22px;">Inquire now! Your 1:1 travel consultant will reply within 1 working day.</h3>
<form action="/orders/quick_inquiry_save" method="post" novalidate="" id="quick_inquiry_form"> <form action="/orders/quick_inquiry_save" method="post" novalidate="" id="quick_inquiry_form">
<textarea id="form_additionalrequirements" name="additional_requirements" placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..."></textarea> <textarea id="form_additionalrequirements" name="additional_requirements" placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..."></textarea>
<div class="selectionBlock">
<h4 style="margin-bottom: 0;margin-top: 0; padding-bottom: 0;">
How would you travel?
</h4>
<div id="group_error_msg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div>
</div>
<div class="travel_group">
<input type="radio" value="Family" id="Family" name="travel_group">
<label for="Family" class="family">
Family
</label>
</div>
<div class="travel_group">
<input type="radio" value="Couple" id="Couple" name="travel_group">
<label for="Couple" class="couple">
Couple
</label>
</div>
<div class="travel_group">
<input type="radio" value="Solo" id="Solo" name="travel_group">
<label for="Solo" class="solo">
Solo
</label>
</div>
<div class="travel_group">
<input type="radio" value="group" id="Other" name="travel_group">
<label for="Other" class="group">
Other group
</label>
</div>
<div id="adultBlock" style="display: none"> <div class="selectionBlock">
<p style=" <h4 style="margin-bottom: 0;margin-top: 0; padding-bottom: 0;">
margin-bottom: 0; How would you travel?
font-size: 22px; </h4>
margin-top: 20px; <div id="group_error_msg" style="display: none">
">When you plan to take the trip:</p> <div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div>
<div class="peopleSelect"> </div>
<p style="margin-top: 20px;"><strong> <div class="travel_group">
Adults (≥18 years old) <input type="radio" value="Family" id="Family" name="travel_group">
</strong> </p> <label for="Family" class="family">
<button class="minaddBtn reduceadult" id="minusAdult" type="button" Family
value="-">-</button> </label>
<input class="number" type="text" value="2" id="adultNumber" name="adult"> </div>
<button class="minaddBtn addadult" type="button" id="plusAdult" value="+">+</button> <div class="travel_group">
</div> <input type="radio" value="Couple" id="Couple" name="travel_group">
<div class="age_range"> <label for="Couple" class="couple">
<p> Couple
Adults' ages </label>
</p> </div>
<div class="checkYes" style="float:left;"> <div class="travel_group">
<label for="65+"> <input type="radio" value="Solo" id="Solo" name="travel_group">
<input type="checkbox" value="yes" name="age_65_plus" id="65+" class="checkBorder" >65+ <label for="Solo" class="solo">
</label> Solo
</div> </label>
<div class="checkYes" style="float:left;"> </div>
<label for="51-64"> <div class="travel_group">
<input type="checkbox" value="yes" name="age_51_64" id="51-64" class="checkBorder" >51-64 <input type="radio" value="group" id="Other" name="travel_group">
</label> <label for="Other" class="group">
</div> Other group
<div class="checkYes" style="float:left;"> </label>
<label for="41-50"> </div>
<input type="checkbox" value="yes" name="age_41_50" id="41-50" class="checkBorder" >41-50
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="31-40">
<input type="checkbox" value="yes" name="age_31_40" id="31-40" class="checkBorder" >31-40
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="18-30">
<input type="checkbox" value="yes" name="age_18_30" id="18-30" class="checkBorder" >18-30
</label>
</div>
</div>
</div>
<div class="clear"></div>
<div id="childrenBlock" style="display: none">
<p style="margin-top: 0;margin-bottom: 0;"><strong>Children</strong></p>
<div class="kids_age">
<p style="margin-bottom: 5px;">10-17 yrs old</p>
<select class="kids_number" id="teenagerNumber" name="teenager_10_17_yrs">
<option value="0">0
</option>
<option value="1">1
</option>
<option value="2">2
</option>
<option value="3">3
</option>
<option value="4">4
</option>
</select>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">3-9 yrs old</p>
<select class="kids_number" id="childrenNumber" name="children_3_9_yrs">
<option value="0">0
</option>
<option value="1">1
</option>
<option value="2">2 <div id="adultBlock" style="display: none">
</option> <p style="margin-top: 0;margin-bottom: 0;"><strong>Adults number (age ≥ 18 years old)</strong></p>
<option value="3">3 <div class="kids_age">
</option> <select class="kids_number" id="adult_18_plus" name="adult_18_plus" >
<option value="4">4 <option value="0">0</option>
</option> <option value="1">1</option>
</select> <option value="2">2</option>
</div> <option value="3">3</option>
<div class="kids_age"> <option value="4">4</option>
<p style="margin-bottom: 5px;">0-2 yrs old</p> <option value="5">5</option>
<select class="kids_number" id="infantNumber" name="infant_0_2_yrs"> <option value="6">6</option>
<option value="0">0 <option value="7">7</option>
</option> <option value="8">8</option>
<option value="1">1 <option value="9">9</option>
</option> <option value="10">10</option>
<option value="2">2 <option value="11">11</option>
</option> <option value="12">12</option>
<option value="3">3 <option value="13">13</option>
</option> <option value="14">14</option>
<option value="4">4 <option value="15">15</option>
</option> <option value="16">16</option>
</select> <option value="17">17</option>
</div> <option value="18">18</option>
</div> <option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
</select>
<p style="
margin-top: 5px;font-size: 18px;
">people</p>
</div>
</div>
<div class="clear"></div>
<div id="childrenBlock" style="display: none">
<p style="margin-top: 0;margin-bottom: 0;"><strong>Children number</strong></p>
<div class="kids_age">
<p style="margin-bottom: 5px;">10-17 yrs old</p>
<select class="kids_number" id="teenagerNumber" name="teenager_10_17">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">3-9 yrs old</p>
<select class="kids_number" id="childrenNumber" name="children_3_9">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">0-2 yrs old</p>
<select class="kids_number" id="infantNumber" name="infant_0_2">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
</div>
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock">
<h4 style="margin-top: 0; margin-bottom: 0;"> <h4 style="margin-top: 0; margin-bottom: 0;">
@ -148,7 +140,7 @@
<div class="travel_group date_select"> <div class="travel_group date_select">
<input type="radio" value="Handpicked comfort (4-star)" id="Handpicked" name="hotel"> <input type="radio" value="Handpicked comfort (4-star)" id="Handpicked" name="hotel">
<label for="Handpicked" class="family"> <label for="Handpicked" class="family">
Handpicked comfort<br> (4-star) Selected comfort<br> (4-star)
</label> </label>
</div> </div>
<div class="travel_group date_select"> <div class="travel_group date_select">
@ -156,43 +148,90 @@
<label for="Standard" class="family"> <label for="Standard" class="family">
Standard <br>(3-star) Standard <br>(3-star)
</label> </label>
</div> </div>
</div> </div>
<div class="selectionBlock"> <div class="selectionBlock" style="margin-bottom: 10px;">
<h4 style="margin-top: 0; margin-bottom: 0;"> <h4 style="margin-bottom: 0;margin-top: 0; padding-bottom: 0;">
When would you travel? When would you travel?
</h4> </h4>
<div id="date_error_msg" style="display: none"> <div id="date_error_msg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div> <div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div>
</div> </div>
<div class="travel_group date_select"> <div class="travel_group date_select" >
<input type="radio" value="exact travel dates" id="exact" name="trip_date"> <input type="radio" value="exact dates" id="exact" name="trip_date">
<label for="exact" class="family"> <label for="exact" class="updatedestination" style="font-size: 18px;">
Exact travel dates Exact dates
</label> </label>
</div> </div>
<div class="travel_group date_select"> <div class="travel_group date_select" >
<input type="radio" value="approximate travel dates" id="approximate" name="trip_date"> <input type="radio" value="approximate dates" id="approximate" name="trip_date">
<label for="approximate" class="couple"> <label for="approximate" class="updatedestination" style="font-size: 18px;">
Approximate travel dates Approximate dates
</label> </label>
</div> </div>
<div class="travel_group date_select"> <div class="travel_group date_select" >
<input type="radio" value="haven't decided travel dates" id="yet" name="trip_date"> <input type="radio" value="Undecided dates" id="yet" name="trip_date">
<label for="yet" class="solo"> <label for="yet" class="updatedestination" style="font-size: 18px;">
Undecided travel dates Undecided dates
</label> </label>
</div> </div>
<div class="trip_date_length" id="tripDateBlock" style="display: none">
<p style="clear: both;margin-bottom: 10px;" id="trip_date_tip">Select your travel date.</p> <div class="trip_date_length" id="tripDateBlock" style="display: none">
<div id="dateSelectionBlock">
<div id='flatpickrBlock'> <div id='dateSelectionBlock'>
<input class="InquiryCalendar datepicker" id="starting_date" name="date_start" placeholder="Starting date *" readonly="readonly" type="text" value="" /> <div id='date_start_block'>
</div> <input type="text" class="arrivalDate datepicker" id="starting_date" name="date_start" value="" placeholder="Select your exact travel date." autocomplete="off" style="width: auto; float: left; margin-right: 15px; height: 30px;
<input type="month" id="expectedMonth" name="expected_month" placeholder="Select your expected travel date."> margin-top: 5px;">
</div> </div>
</div> <select class="country_code" id="expectedMonth" name="expected_month" style="margin-top: 15px;">
<option value="" disabled selected>Select your approximate travel date.</option>
<option value="Mar. 2024">Mar. 2024</option>
<option value="Apr. 2024">Apr. 2024</option>
<option value="May. 2024">May. 2024</option>
<option value="Jun. 2024">Jun. 2024</option>
<option value="Jul. 2024">Jul. 2024</option>
<option value="Aug. 2024">Aug. 2024</option>
<option value="Sep. 2024">Sep. 2024</option>
<option value="Oct. 2024">Oct. 2024</option>
<option value="Nov. 2024">Nov. 2024</option>
<option value="Dec. 2024">Dec. 2024</option>
<option value="Jan. 2025">Jan. 2025</option>
<option value="Feb. 2025">Feb. 2025</option>
<option value="Mar. 2025">Mar. 2025</option>
<option value="Apr. 2025">Apr. 2025</option>
<option value="May. 2025">May. 2025</option>
<option value="Jun. 2025">Jun. 2025</option>
<option value="Jul. 2025">Jul. 2025</option>
<option value="Aug. 2025">Aug. 2025</option>
<option value="Sep. 2025">Sep. 2025</option>
<option value="Oct. 2025">Oct. 2025</option>
<option value="Nov. 2025">Nov. 2025</option>
<option value="Dec. 2025">Dec. 2025</option>
<option value="Jan. 2026">Jan. 2026</option>
<option value="Feb. 2026">Feb. 2026</option>
<option value="Mar. 2026">Mar. 2026</option>
<option value="Apr. 2026">Apr. 2026</option>
<option value="May. 2026">May. 2026</option>
<option value="Jun. 2026">Jun. 2026</option>
<option value="Jul. 2026">Jul. 2026</option>
<option value="Aug. 2026">Aug. 2026</option>
<option value="Sep. 2026">Sep. 2026</option>
<option value="Oct. 2026">Oct. 2026</option>
<option value="Nov. 2026">Nov. 2026</option>
<option value="Dec. 2026">Dec. 2026</option>
<option value="Jan. 2027">Jan. 2027</option>
<option value="Feb. 2027">Feb. 2027</option>
<option value="Mar. 2027">Mar. 2027</option>
<option value="Apr. 2027">Apr. 2027</option>
</select>
</div>
</div>
</div> </div>
<input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" /> <input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" />
<div id="realname_errmsg" style="display: none"> <div id="realname_errmsg" style="display: none">
@ -201,86 +240,11 @@
<input class="EmailAddress" id="email" name="email" placeholder="Email *" required="" type="text" value="" /> <input class="EmailAddress" id="email" name="email" placeholder="Email *" required="" type="text" value="" />
<div id="email_errmsg" style="display: none"> <div id="email_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your email.</div> <div class="requiredArea" style="margin-top:-10px;">Please enter your email.</div>
</div> </div>
<div id="email_verify_errmsg" style="display: none"> <div id="email_verify_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please verify your email.</div> <div class="requiredArea" style="margin-top:-10px;">Please verify your email.</div>
</div> </div>
<!--<div class="selectionBlock">
<div class="peopleSelect">
<span class="formMemo">
Adults (≥12 years old)
</span>
<div class="numberBtn">
<input class="minaddBtn reduceadult" id="minusAdult" type="button" value="-">
<input class="number" type="text" id="adultNumber" readonly value="1" name="adultnumber">
<input class="minaddBtn addadult" id="plusAdult" type="button" value="+">
</div>
</div>
<div class="age_range">
<p>
Adults' ages
</p>
<div class="checkYes">
<label for="12-17">
<input type="checkbox" value="yes" name="adult age range 12 17" id="12-17" class="checkBorder">12-17
</label>
</div>
<div class="checkYes">
<label for="18-30">
<input type="checkbox" value="yes" name="adult age range 18 30" id="18-30" class="checkBorder">18-30
</label>
</div>
<div class="checkYes">
<label for="31-50">
<input type="checkbox" value="yes" name="adult age range 31 50" id="31-50" class="checkBorder">31-50
</label>
</div>
<div class="checkYes">
<label for="51-64">
<input type="checkbox" value="yes" name="adult age range 51 64" id="51-64" class="checkBorder">51-64
</label>
</div>
<div class="checkYes">
<label for="65+">
<input type="checkbox" value="yes" name="adult age range 65" id="65+" class="checkBorder">65+
</label>
</div>
</div>
<div class="peopleSelect">
<span class="formMemo">
Kids (2-11 years old)
</span>
<div class="numberBtn">
<input class="minaddBtn reducechild" id="minusKid" type="button" value="-">
<input class="kidNum" type="text" id="kidNumber" readonly value="0" name="kidnumber">
<input class="minaddBtn addchild" id="plusKid" type="button" value="+">
</div>
</div>
<div class="age_range">
<p>
Kids' ages
</p>
<div class="checkYes">
<label for="0">
<input type="checkbox" value="yes" name="kid age range 0 2" id="0" class="checkBorder">0-2
</label>
</div>
<div class="checkYes">
<label for="3">
<input type="checkbox" value="yes" name="kid age range 3 7" id="3" class="checkBorder">3-7
</label>
</div>
<div class="checkYes">
<label for="8">
<input type="checkbox" value="yes" name="kid age range 8 11" id="8" class="checkBorder">8-11
</label>
</div>
</div>
<div class="clear">
</div>
</div>-->
<select name="country_code" class="country_code"> <select name="country_code" class="country_code">
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option> <option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option> <option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
@ -534,15 +498,15 @@
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option> <option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option> <option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select> </select>
<input class="Inquiryphone" id="PhoneNo" name="PhoneNo" placeholder="Phone number *" type="tel" value="" /> <input class="Inquiryphone" id="PhoneNo" name="PhoneNo" placeholder="Phone number *" type="tel" value="" />
<div id="contact_errmsg" style="display: none"> <div id="contact_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div> </div> <div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div> </div>
<p style=" <p style="
margin-top: 0; margin-top: 0;
margin-bottom: 10px; margin-bottom: 10px;
padding: 0; padding: 0;
">I prefer to be contacted via:</p> ">I am also available on:</p>
<div class="checkYes"> <div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" >
<label for="whatsapp">WhatsApp</label> <label for="whatsapp">WhatsApp</label>
@ -551,36 +515,14 @@ margin-bottom: 10px;
<input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" >
<label for="iMessage">iMessage</label> <label for="iMessage">iMessage</label>
</div> </div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_phone_call" id="Phone" class="checkBorder" > <button class="sendButton" id="quick_inquiry_button" name="quick_inquiry_button" type="button">Inquire Now</button> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/>
<label for="Phone">Phone call</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_email" id="Email" class="checkBorder" >
<label for="Email">Email</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_video_appointment" id="Video" class="checkBorder" >
<label for="Video">Video appointment</label>
</div>
<button class="sendButton" id="quick_inquiry_button" name="quick_inquiry_button" type="button">Inquire Now</button> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/>
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" /> <input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
</form> </form>
<!--
<h3 style="text-align: center;
font-size: 20px;
line-height: 22px;">For a quick conversation, simply reach us via WhatsApp:</h3>
<div class="contactwechat"><img alt="Asia Highlights' wechat code" height="100px" src="https://data.asiahighlights.com/image/about/asia-highlights-whatsapp-code.jpg" width="100px" >
<div class="wechatinfo"><span class="wechatred">+8615807734776</span><br>
Email: <span class="wechatred">contact@asiahighlights.com</span></div>
</div>
-->
</div> </div>
<script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script> <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script>
<script> <script>
var selectedExpectedDate = ''; var selectedExpectedDate = '';
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
flatpickr("#starting_date", { flatpickr("#starting_date", {
@ -593,7 +535,7 @@ document.addEventListener('DOMContentLoaded', () => {
var quick_inquiry_button = document.getElementById("quick_inquiry_button"); var quick_inquiry_button = document.getElementById("quick_inquiry_button");
var quick_inquiry_form = document.getElementById("quick_inquiry_form"); var quick_inquiry_form = document.getElementById("quick_inquiry_form");
quick_inquiry_button.addEventListener('click', function(event) { quick_inquiry_button.addEventListener('click', function(event) {
var validateResult = validateQuickInquiryForm(); var validateResult = validateQuickInquiryForm();
if (validateResult) { if (validateResult) {
@ -612,7 +554,7 @@ document.addEventListener('DOMContentLoaded', () => {
quick_inquiry_button.innerText = "Submitted successfully"; quick_inquiry_button.innerText = "Submitted successfully";
}); });
} }
} }
}); });
}); });
@ -687,25 +629,12 @@ function validateQuickInquiryForm() {
} }
</script> </script>
<script> <script>
$(function () { $(function () {
var $adultBlock = $('#adultBlock'); var $adultBlock = $('#adultBlock');
var $childrenBlock = $('#childrenBlock'); var $childrenBlock = $('#childrenBlock');
var $adultNumberInput = $('#adultNumber');
var adultNumber = $adultNumberInput.val();
var $teenagerNumberInput = $('#teenagerNumber');
var teenagerNumber = $teenagerNumberInput.val();
var $childrenNumberInput = $('#childrenNumber');
var childrenNumber = $childrenNumberInput.val();
var $infantNumberInput = $('#infantNumber');
var infantNumber = $infantNumberInput.val();
$('input[name="travel_group"]').each((i, groupEle) => { $('input[name="travel_group"]').each((i, groupEle) => {
$(groupEle).click(function (e) { $(groupEle).click(function (e) {
$teenagerNumberInput.val(0);
$childrenNumberInput.val(0);
$infantNumberInput.val(0);
var currentTarget = e.currentTarget; var currentTarget = e.currentTarget;
if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) { if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) {
$adultBlock.show(); $adultBlock.show();
@ -715,19 +644,19 @@ function validateQuickInquiryForm() {
$childrenBlock.hide(); $childrenBlock.hide();
} }
if (currentTarget.id === 'Couple') { if (currentTarget.id === 'Couple') {
$adultNumberInput.val(2); $('#adult_18_plus').val('2');
} else if (currentTarget.id === 'Solo') { } else if (currentTarget.id === 'Solo') {
$adultNumberInput.val(1); $('#adult_18_plus').val('1');
} }
}) })
}); });
var $tripDateBlock = $('#tripDateBlock'); var $tripDateBlock = $('#tripDateBlock');
var $expectedDate = $('#flatpickrBlock'); var $expectedDate = $('#date_start_block');
var $expectedMonth = $('#expectedMonth'); var $expectedMonth = $('#expectedMonth');
var $dateSelectionBlock = $('#dateSelectionBlock'); var $dateSelectionBlock = $('#dateSelectionBlock');
var $tripDateTip = $('#trip_date_tip'); var $tripDateTip = $('#trip_date_tip');
$('input[name="trip_date"]').each((i, tripDateEle) => { $('input[name="trip_date"]').each((i, tripDateEle) => {
$(tripDateEle).click(function (e) { $(tripDateEle).click(function (e) {
$expectedDate.val(''); $expectedDate.val('');
@ -751,58 +680,13 @@ function validateQuickInquiryForm() {
} }
}) })
}); });
//成人
$('#plusAdult').click(function () {
adultNumber++;
$adultNumberInput.val(adultNumber);
});
$('#minusAdult').click(function () {
if (adultNumber > 1) {
adultNumber--;
$adultNumberInput.val(adultNumber);
}
});
// 青少年
$('#plusTeenager').click(function () {
teenagerNumber++;
$teenagerNumberInput.val(teenagerNumber);
});
$('#minusTeenager').click(function () {
if (teenagerNumber > 0) {
teenagerNumber--;
$teenagerNumberInput.val(teenagerNumber);
}
});
// 儿童
$('#plusChildren').click(function () {
childrenNumber++;
$childrenNumberInput.val(childrenNumber);
});
$('#minusChildren').click(function () {
if (childrenNumber > 0) {
childrenNumber--;
$childrenNumberInput.val(childrenNumber);
}
});
// 婴儿
$('#plusInfant').click(function () {
infantNumber++;
$infantNumberInput.val(infantNumber);
});
$('#minusInfant').click(function () {
if (infantNumber > 0) {
infantNumber--;
$infantNumberInput.val(infantNumber);
}
});
}) })
</script> </script>
<style> <style>
.date_select {width: 27.5% !important;} .date_select {width: 31% !important;}
@media (max-width: 750px){ @media (max-width: 750px){
.date_select { .date_select {width: 47% !important;}
width: 93% !important; .date_select label {font-size:17px !important;}
}
} }
</style> </style>

@ -6,27 +6,37 @@
<div class="selectionBlock" style="margin-bottom: 0;"> <div class="selectionBlock" style="margin-bottom: 0;">
<div id="adultBlock" > <div id="adultBlock" >
<p style="margin-bottom: 0; font-size: 22px; text-align: left;">Traveler numbers for your group:</p> <p style="margin-bottom: 0; font-size: 22px; text-align: left;">Traveler numbers for your group:</p>
<div class="peopleSelect" > <div class="peopleSelect" >
<p style="margin-top: 20px; margin-bottom: 10px;"> <p style="margin-top: 20px; margin-bottom: 10px;">
Adult & kids (≥8 years old) Adult & kids (≥8 years old)
</p> </p>
<div class="numberBtn"> <div class="numberBtn">
<input class="minaddBtn reduceadult" id="minusAdult" type="button" value="-"> <input class="minaddBtn reduceadult" id="minusAdult" type="button" value="-">
<input class="number" type="text" id="adultNumber" readonly value="1" name="adult"> <input class="number" type="text" id="adultNumber" readonly value="1" name="adult" style="width: 50px;
<input class="minaddBtn addadult" id="plusAdult" type="button" value="+"> height: 22px;
</div> top: -5px;
</div> position: relative;
text-align: center;
<div class="peopleSelect" > font-size: 20px;">
<p style="margin-top: 20px; margin-bottom: 10px;"> <input class="minaddBtn addadult" id="plusAdult" type="button" value="+">
Kids (0-7 years old) </div>
</p> </div>
<div class="numberBtn">
<input class="minaddBtn reduceadult" id="minusKid" type="button" value="-"> <div class="peopleSelect" >
<input class="number" type="text" id="kidNumber" readonly value="0" name="children_3_9_yrs"> <p style="margin-top: 20px; margin-bottom: 10px;">
<input class="minaddBtn addadult" id="plusKid" type="button" value="+"> Kids (0-7 years old)
</div> </p>
</div> <div class="numberBtn">
<input class="minaddBtn reduceadult" id="minusKid" type="button" value="-">
<input class="number" type="text" id="kidNumber" readonly value="0" name="children_3_9_yrs" style="width: 50px;
height: 22px;
top: -5px;
position: relative;
text-align: center;
font-size: 20px;">
<input class="minaddBtn addadult" id="plusKid" type="button" value="+">
</div>
</div>
</div> </div>
</div> </div>
<input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" /> <input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" value="" />
@ -303,7 +313,7 @@
margin-top: 0; margin-top: 0;
margin-bottom: 10px; margin-bottom: 10px;
padding: 0; padding: 0;
">I prefer to be contacted via:</p> ">I am also available on:</p>
<div class="checkYes"> <div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" >
@ -313,32 +323,13 @@
<input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" > <input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" >
<label for="iMessage">iMessage</label> <label for="iMessage">iMessage</label>
</div> </div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_phone_call" id="Phone" class="checkBorder" >
<label for="Phone">Phone call</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_email" id="Email" class="checkBorder" >
<label for="Email">Email</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_video_appointment" id="Video" class="checkBorder" >
<label for="Video">Video appointment</label>
</div>
<button class="sendButton" id="submit_gp_form" type="button">Inquire</button> <button class="sendButton" id="submit_gp_form" type="button">Inquire</button>
<input name="payment_description" type="hidden" value="Booking Yi Peng Festival Mini-Group Tour" /> <input name="payment_description" type="hidden" value="Booking Yi Peng Festival Mini-Group Tour" />
<input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>"/>
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" /> <input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
</form> </form>
<!-- <h3 style="text-align: center;
font-size: 20px;
line-height: 22px;">For a quick conversation, simply reach us via WhatsApp:</h3>
<div class="contactwechat"><img alt="Asia Highlights' wechat code" height="100px" src="https://data.asiahighlights.com/image/about/asia-highlights-whatsapp-code.jpg" width="100px" >
<div class="wechatinfo"><span class="wechatred">+8615807734776</span><br>
Email: <span class="wechatred">contact@asiahighlights.com</span></div>
</div>
-->
</div> </div>
<script> <script>
@ -459,4 +450,4 @@
}); });
})(document); })(document);
</script> </script>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,592 @@
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<div class="tmbottom">
<h3 style="font-size: 24px; line-height: 22px;">Book Now for Chiang Mai CAD New Year Countdown to 2025 Festival Ticket</h3>
<form id='ticket_form' action="https://www.asiahighlights.com/orders/new_year_countdown_save" method="post" >
<p style="font-size: 22px;"><strong>Select Date:</strong></p>
<div class="selectHotl" style="margin-bottom: 20px;">
<div class="optionLable">
<input type="radio" value="2024-12-30" id="december30th" name="ticket_date">
<label for="december30th">
December 30th, 2024
</label>
</div>
<div class="optionLable">
<input type="radio" value="2024-12-31" checked id="december31st" name="ticket_date">
<label for="december31st">
December 31st, 2024
</label>
</div>
</div>
<p style="font-size: 22px;"><strong>Select an Available Ticket Type</strong></p>
<div class="selectHotl" style="margin-bottom: 20px;">
<div class="optionLable" id="ticket_type_elite_december30th" style="display: none">
<input type="radio" value="Elite Ticket" id="elite_december30th" data-price="189" name="ticket_type">
<label for="elite_december30th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">Elite Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$189 (6900THB)
<br>
Elite service + shuttle transfer + dinner
</div>
</label>
</div>
<div class="optionLable" id="ticket_type_elite_december31th">
<input type="radio" value="Elite Ticket" id="elite_december31th" data-price="329" name="ticket_type">
<label for="elite_december31th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">Elite Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$329 (11,750 THB)
<br>
Elite service + <strong>exclusive hotel transfer</strong> + dinner
</div>
</label>
</div>
<div class="optionLable" id="vip_type_premium_december30th" style="display: none">
<input type="radio" value="Premium Ticket" id="premium_december30th" data-price="139" name="ticket_type">
<label for="premium_december30th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">Premium Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$139 (4900THB)
<br>
Premium service + shuttle transfer + dinner
</div>
</label>
</div>
<div class="optionLable" id="vip_type_premium_december31th">
<input type="radio" value="Premium Ticket" id="premium_december31th" data-price="179" name="ticket_type">
<label for="premium_december31th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">Premium Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$179 (6,500 THB)
<br>
Premium service + shuttle transfer + dinner
</div>
</label>
</div>
<div class="optionLable" id="ticket_type_standard_december30th" style="display: none">
<input type="radio" value="VIP Ticket" id="vip_december30th" data-price="109" name="ticket_type">
<label for="vip_december30th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">VIP Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$109 (3900THB)
<br>
VIP service + shuttle transfer + dinner
</div>
</label>
</div>
<div class="optionLable" id="ticket_type_standard_december31th">
<input type="radio" value="VIP Ticket" checked id="vip_december31th" data-price="139" name="ticket_type">
<label for="vip_december31th" style="font-size:18px;">
<strong style=" margin-bottom: 5px;
display: block;
font-size: 19px;">VIP Ticket</strong>
<div class="selectionMemo" style="line-height: 18px;">
US$139 (5,000 THB)
<br>
VIP service + shuttle transfer + dinner
</div>
</label>
</div>
</div>
<div id="ticket_type_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please select at least one option.</div>
</div>
<p style="font-size: 22px;"><strong>Select Ticket Quantity</strong></p>
<div class="peopleSelect" style="width: auto;">
<span class="formMemo">
Adults and older children (8+ years old)
</span>
<div class="numberBtn">
<input class="minaddBtn reduceadult" id='minusButton' type="button" value="-">
<input class="number" id="adultNumberValue" readonly="readonly" type="text" value="1"
name="adult" style="width: 50px;
height: 22px;
top: -5px;
position: relative;
text-align: center;
font-size: 20px;">
<input class="minaddBtn addadult" id='plusButton' type="button" value="+">
</div>
</div>
<div class="payonline_price">Total price: <strong id="totalPriceText">$129</strong></div>
<p style=" margin-top: 30px;
margin-bottom: 10px;"><strong>Please provide correct personal information for your ticket
booking. Double
check.</strong></p>
<input class="FullName" id="ticket_realname" name="fullname"
placeholder="Your name * (exactly per passport)" required="" type="text" value="" />
<div id="ticket_realname_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your name.</div>
</div>
<input class="EmailAddress" id="ticket_email" name="email" placeholder="Email *" required="" type="text"
value="" />
<div id="ticket_email_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your email.</div>
</div>
<div id="ticket_email_verify_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please verify your email.</div>
</div>
<select name="country_code" class="country_code">
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option style="font-weight: 600;" value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option style="font-weight: 600;" value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="France +33">France&nbsp; &nbsp;+33</option>
<option style="font-weight: 600;" value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option style="font-weight: 600; " value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option style="font-weight: 600; " value="Mexico +52">Mexico&nbsp; &nbsp;+52</option>
<option style="font-weight: 600; " value="Netherlands +31">Netherlands&nbsp; &nbsp;+31</option>
<option style="font-weight: 600; " value="Singapore +65">Singapore&nbsp; &nbsp;+65</option>
<option value="Afghanistan +93">Afghanistan &nbsp; &nbsp;+93</option>
<option value="Albania +355">Albania &nbsp; &nbsp;+355</option>
<option value="Algeria +213">Algeria&nbsp; &nbsp;+213</option>
<option value="American Samoa +1">American Samoa&nbsp; &nbsp;+1684</option>
<option value="Andorra +376">Andorra&nbsp; &nbsp;+376</option>
<option value="Angola +244">Angola&nbsp; &nbsp;+244</option>
<option value="Anguilla +1">Anguilla&nbsp; &nbsp;+1264</option>
<option value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option value="Antigua and Barbuda +1">Antigua and Barbuda&nbsp; &nbsp;+1268</option>
<option value="Argentina +54">Argentina&nbsp; &nbsp;+54</option>
<option value="Armenia +374">Armenia &nbsp; &nbsp;+374</option>
<option value="Aruba +297">Aruba&nbsp; &nbsp;+297</option>
<option value="Ascension Island +247">Ascension Island&nbsp; &nbsp;+247</option>
<option value="Austria +43">Austria&nbsp; &nbsp;+43</option>
<option value="Azerbaijan +994">Azerbaijan&nbsp; &nbsp;+994</option>
<option value="Bahamas +1">Bahamas&nbsp; &nbsp;+1242</option>
<option value="Bahrain +973">Bahrain&nbsp; &nbsp;+973</option>
<option value="Bangladesh +880">Bangladesh&nbsp; &nbsp;+880</option>
<option value="Barbados +1">Barbados&nbsp; &nbsp;+1246</option>
<option value="Belarus +375">Belarus&nbsp; &nbsp;+375</option>
<option value="Belgium +32">Belgium&nbsp; &nbsp;+32</option>
<option value="Belize +501">Belize&nbsp; &nbsp;+501</option>
<option value="Benin +229">Benin&nbsp; &nbsp;+229</option>
<option value="Bermuda +1">Bermuda&nbsp; &nbsp;+1441</option>
<option value="Bhutan +975">Bhutan&nbsp; &nbsp;+975</option>
<option value="Bolivia +591">Bolivia&nbsp; &nbsp;+591</option>
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina&nbsp; &nbsp;+387</option>
<option value="Botswana +267">Botswana&nbsp; &nbsp;+267</option>
<option value="Brazil +55">Brazil&nbsp; &nbsp;+55</option>
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory&nbsp; &nbsp;+246</option>
<option value="British Virgin Islands +1">British Virgin Islands&nbsp; &nbsp;+1284</option>
<option value="Brunei +673">Brunei&nbsp; &nbsp;+673</option>
<option value="Bulgaria +359">Bulgaria &nbsp; &nbsp;+359</option>
<option value="Burkina Faso +226">Burkina Faso&nbsp; &nbsp;+226</option>
<option value="Burundi +257">Burundi&nbsp; &nbsp;+257</option>
<option value="Cambodia +855">Cambodia&nbsp; &nbsp;+855</option>
<option value="Cameroon +237">Cameroon&nbsp; &nbsp;+237</option>
<option value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option value="Cape Verde +238">Cape Verde&nbsp; &nbsp;+238</option>
<option value="Caribbean Netherlands +599">Caribbean Netherlands&nbsp; &nbsp;+599</option>
<option value="Cayman Islands +1">Cayman Islands&nbsp; &nbsp;+1345</option>
<option value="Central African Republic +236">Central African Republic&nbsp; &nbsp;+236</option>
<option value="Chad +235">Chad&nbsp; &nbsp;+235</option>
<option value="Chile +56">Chile&nbsp; &nbsp;+56</option>
<option value="China +86">China&nbsp; &nbsp;+86</option>
<option value="Christmas Island +61">Christmas Island&nbsp; &nbsp;+6189164</option>
<option value="Cocos Islands +61">Cocos Islands&nbsp; &nbsp;+6189162</option>
<option value="Colombia +57">Colombia&nbsp; &nbsp;+57</option>
<option value="Comoros +269">Comoros&nbsp; &nbsp;+269</option>
<option value="Congo +243">Congo (DRC)&nbsp; &nbsp;+243</option>
<option value="Congo +242">Congo (Republic)&nbsp; &nbsp;+242</option>
<option value="Cook Islands +682">Cook Islands&nbsp; &nbsp;+682</option>
<option value="Costa Rica +506">Costa Rica&nbsp; &nbsp;+506</option>
<option value="Côte d'Ivoire +225">Côte d'Ivoire&nbsp; &nbsp;+225</option>
<option value="Croatia +385">Croatia&nbsp; &nbsp;+385</option>
<option value="Cuba +53">Cuba&nbsp; &nbsp;+53</option>
<option value="Curaçao +599">Curaçao&nbsp; &nbsp;+599</option>
<option value="Cyprus +357">Cyprus&nbsp; &nbsp;+357</option>
<option value="Czech Republic +420">Czech Republic&nbsp; &nbsp;+420</option>
<option value="Denmark +45">Denmark&nbsp; &nbsp;+45</option>
<option value="Djibouti +253">Djibouti&nbsp; &nbsp;+253</option>
<option value="Dominica +1">Dominica&nbsp; &nbsp;+1767</option>
<option value="Dominican Republic +1">Dominican Republic&nbsp; &nbsp;+1809</option>
<option value="Ecuador +593">Ecuador&nbsp; &nbsp;+593</option>
<option value="Egypt +20">Egypt&nbsp; &nbsp;+20</option>
<option value="El Salvador +503">El Salvador&nbsp; &nbsp;+503</option>
<option value="Equatorial Guinea +240">Equatorial Guinea&nbsp; &nbsp;+240</option>
<option value="Eritrea +291">Eritrea&nbsp; &nbsp;+291</option>
<option value="Estonia +372">Estonia&nbsp; &nbsp;+372</option>
<option value="Eswatini +268">Eswatini&nbsp; &nbsp;+268</option>
<option value="Ethiopia +251">Ethiopia&nbsp; &nbsp;+251</option>
<option value="Falkland Islands +500">Falkland Islands&nbsp; &nbsp;+500</option>
<option value="Faroe Islands +298">Faroe Islands&nbsp; &nbsp;+298</option>
<option value="Fiji +679">Fiji&nbsp; &nbsp;+679</option>
<option value="Finland +358">Finland&nbsp; &nbsp;+358</option>
<option value="France +33">France&nbsp; &nbsp;+33</option>
<option value="French Guiana +594">French Guiana&nbsp; &nbsp;+594</option>
<option value="French Polynesia +689">French Polynesia&nbsp; &nbsp;+689</option>
<option value="Gabon +241">Gabon&nbsp; &nbsp;+241</option>
<option value="Gambia +220">Gambia&nbsp; &nbsp;+220</option>
<option value="Georgia +995">Georgia&nbsp; &nbsp;+995</option>
<option value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option value="Ghana +233">Ghana&nbsp; &nbsp;+233</option>
<option value="Gibraltar +350">Gibraltar&nbsp; &nbsp;+350</option>
<option value="Greece +30">Greece&nbsp; &nbsp;+30</option>
<option value="Greenland +299">Greenland&nbsp; &nbsp;+299</option>
<option value="Grenada +1">Grenada&nbsp; &nbsp;+1473</option>
<option value="Guadeloupe +590">Guadeloupe&nbsp; &nbsp;+590</option>
<option value="Guam +1">Guam&nbsp; &nbsp;+1671</option>
<option value="Guatemala +502">Guatemala&nbsp; &nbsp;+502</option>
<option value="Guernsey +44">Guernsey&nbsp; &nbsp;+441481</option>
<option value="Guinea +224">Guinea&nbsp; &nbsp;+224</option>
<option value="Guinea-Bissau +245">Guinea-Bissau&nbsp; &nbsp;+245</option>
<option value="Guyana +592">Guyana&nbsp; &nbsp;+592</option>
<option value="Haiti +509">Haiti&nbsp; &nbsp;+509</option>
<option value="Honduras +504">Honduras&nbsp; &nbsp;+504</option>
<option value="Hong Kong +852">Hong Kong&nbsp; &nbsp;+852</option>
<option value="Hungary +36">Hungary&nbsp; &nbsp;+36</option>
<option value="Iceland +354">Iceland&nbsp; &nbsp;+354</option>
<option value="India +91">India&nbsp; &nbsp;+91</option>
<option value="Indonesia +62">Indonesia&nbsp; &nbsp;+62</option>
<option value="Iran +98">Iran&nbsp; &nbsp;+98</option>
<option value="Iraq +964">Iraq&nbsp; &nbsp;+964</option>
<option value="Ireland +353">Ireland&nbsp; &nbsp;+353</option>
<option value="Isle of Man +44">Isle of Man&nbsp; &nbsp;+44</option>
<option value="Israel +972">Israel&nbsp; &nbsp;+972</option>
<option value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option value="Jamaica +1">Jamaica&nbsp; &nbsp;+1876</option>
<option value="Japan +81">Japan&nbsp; &nbsp;+81</option>
<option value="Jersey +44">Jersey&nbsp; &nbsp;+44</option>
<option value="Jordan +962">Jordan&nbsp; &nbsp;+962</option>
<option value="Kazakhstan +7">Kazakhstan &nbsp; &nbsp;+7</option>
<option value="Kenya +254">Kenya&nbsp; &nbsp;+254</option>
<option value="Kiribati +686">Kiribati&nbsp; &nbsp;+686</option>
<option value="Kosovo +383">Kosovo&nbsp; &nbsp;+383</option>
<option value="Kuwait +965">Kuwait&nbsp; &nbsp;+965</option>
<option value="Kyrgyzstan +996">Kyrgyzstan &nbsp; &nbsp;+996</option>
<option value="Laos +856">Laos&nbsp; &nbsp;+856</option>
<option value="Latvia +371">Latvia &nbsp; &nbsp;+371</option>
<option value="Lebanon +961">Lebanon&nbsp; &nbsp;+961</option>
<option value="Lesotho +266">Lesotho&nbsp; &nbsp;+266</option>
<option value="Liberia +231">Liberia&nbsp; &nbsp;+231</option>
<option value="Libya +218">Libya&nbsp; &nbsp;+218</option>
<option value="Liechtenstein +423">Liechtenstein&nbsp; &nbsp;+423</option>
<option value="Lithuania +370">Lithuania&nbsp; &nbsp;+370</option>
<option value="Luxembourg +352">Luxembourg&nbsp; &nbsp;+352</option>
<option value="Macau +853">Macau&nbsp; &nbsp;+853</option>
<option value="Macedonia +389">Macedonia&nbsp; &nbsp;+389</option>
<option value="Madagascar +261">Madagascar&nbsp; &nbsp;+261</option>
<option value="Malawi +265">Malawi&nbsp; &nbsp;+265</option>
<option value="Malaysia +60">Malaysia&nbsp; &nbsp;+60</option>
<option value="Maldives +960">Maldives&nbsp; &nbsp;+960</option>
<option value="Mali +223">Mali&nbsp; &nbsp;+223</option>
<option value="Malta +356">Malta&nbsp; &nbsp;+356</option>
<option value="Marshall +692">Marshall Islands&nbsp; &nbsp;+692</option>
<option value="Martinique +596">Martinique&nbsp; &nbsp;+596</option>
<option value="Mauritania +222">Mauritania&nbsp; &nbsp;+222</option>
<option value="Mauritius +230">Mauritius&nbsp; &nbsp;+230</option>
<option value="Mayotte +262">Mayotte&nbsp; &nbsp;+262</option>
<option value="Micronesia +691">Micronesia&nbsp; &nbsp;+691</option>
<option value="Moldova +373">Moldova&nbsp; &nbsp;+373</option>
<option value="Monaco +377">Monaco&nbsp; &nbsp;+377</option>
<option value="Mongolia +976">Mongolia&nbsp; &nbsp;+976</option>
<option value="Montenegro +382">Montenegro&nbsp; &nbsp;+382</option>
<option value="Montserrat +1">Montserrat&nbsp; &nbsp;+1664</option>
<option value="Morocco +212">Morocco&nbsp; &nbsp;+212</option>
<option value="Mozambique +258">Mozambique&nbsp; &nbsp;+258</option>
<option value="Myanmar +95">Myanmar &nbsp; &nbsp;+95</option>
<option value="Namibia +264">Namibia&nbsp; &nbsp;+264</option>
<option value="Nauru +674">Nauru&nbsp; &nbsp;+674</option>
<option value="Nepal +977">Nepal&nbsp; &nbsp;+977</option>
<option value="New Caledonia +687">New Caledonia&nbsp; &nbsp;+687</option>
<option value="New Zealand +64">New Zealand&nbsp; &nbsp;+64</option>
<option value="Nicaragua +505">Nicaragua&nbsp; &nbsp;+505</option>
<option value="Niger +227">Niger&nbsp; &nbsp;+227</option>
<option value="Nigeria +234">Nigeria&nbsp; &nbsp;+234</option>
<option value="Niue +683">Niue&nbsp; &nbsp;+683</option>
<option value="Norfolk Island +672">Norfolk Island&nbsp; &nbsp;+6723</option>
<option value="North Korea +850">North Korea&nbsp; &nbsp;+850</option>
<option value="Northern Mariana Islands +1">Northern Mariana Islands&nbsp; &nbsp;+1670</option>
<option value="Norway +47">Norway&nbsp; &nbsp;+47</option>
<option value="Oman +968">Oman&nbsp; &nbsp;+968</option>
<option value="Pakistan +92">Pakistan&nbsp; &nbsp;+92</option>
<option value="Palau +680">Palau&nbsp; &nbsp;+680</option>
<option value="Palestine +970">Palestine &nbsp; &nbsp;+970</option>
<option value="Panama +507">Panama &nbsp; &nbsp;+507</option>
<option value="Papua New Guinea 675">Papua New Guinea&nbsp; &nbsp;+675</option>
<option value="Paraguay +595">Paraguay&nbsp; &nbsp;+595</option>
<option value="Peru +51">Peru &nbsp; &nbsp;+51</option>
<option value="Philippines +63">Philippines&nbsp; &nbsp;+63</option>
<option value="Poland +48">Poland&nbsp; &nbsp;+48</option>
<option value="Portugal +351">Portugal&nbsp; &nbsp;+351</option>
<option value="Puerto Rico +1">Puerto Rico&nbsp; &nbsp;+1787</option>
<option value="Qatar +974">Qatar&nbsp; &nbsp;+974</option>
<option value="Réunion +262">Réunion&nbsp; &nbsp;+262</option>
<option value="Romania +40">Romania&nbsp; &nbsp;+40</option>
<option value="Russia +7">Russia&nbsp; &nbsp;+7</option>
<option value="Rwanda +250">Rwanda&nbsp; &nbsp;+250</option>
<option value="Saint Barthélemy +590">Saint Barthélemy&nbsp; &nbsp;+590</option>
<option value="Saint Helena +290">Saint Helena&nbsp; &nbsp;+290</option>
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis&nbsp; &nbsp;+1869</option>
<option value="Saint Lucia +1">Saint Lucia&nbsp; &nbsp;+1758</option>
<option value="Saint Martin +590">Saint Martin&nbsp; &nbsp;+590</option>
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon&nbsp; &nbsp;+508</option>
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines&nbsp; &nbsp;+1784</option>
<option value="Samoa +685">Samoa&nbsp; &nbsp;+685</option>
<option value="San Marino +378">San Marino&nbsp; &nbsp;+378</option>
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe&nbsp; &nbsp;+239</option>
<option value="Saudi Arabia +966">Saudi Arabia &nbsp; &nbsp;+966</option>
<option value="Senegal +221">Senegal &nbsp; &nbsp;+221</option>
<option value="Serbia +381">Serbia&nbsp; &nbsp;+381</option>
<option value="Seychelles +248">Seychelles&nbsp; &nbsp;+248</option>
<option value="Sierra Leone +232">Sierra Leone&nbsp; &nbsp;+232</option>
<option value="Sint Maarten +1">Sint Maarten&nbsp; &nbsp;+1721</option>
<option value="Slovakia +421">Slovakia&nbsp; &nbsp;+421</option>
<option value="Slovenia +386">Slovenia&nbsp; &nbsp;+386</option>
<option value="Solomon Islands +677">Solomon Islands&nbsp; &nbsp;+677</option>
<option value="Somalia +252">Somalia&nbsp; &nbsp;+252</option>
<option value="South Africa +27">South Africa&nbsp; &nbsp;+27</option>
<option value="South Korea +82">South Korea&nbsp; &nbsp;+82</option>
<option value="South Sudan +211">South Sudan&nbsp; &nbsp;+211</option>
<option value="Spain +34">Spain&nbsp; &nbsp;+34</option>
<option value="Sri Lanka +94">Sri Lanka &nbsp; &nbsp;+94</option>
<option value="Sudan +249">Sudan&nbsp; &nbsp;+249</option>
<option value="Suriname">Suriname&nbsp; &nbsp;+597</option>
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen&nbsp; &nbsp;+47</option>
<option value="Sweden +46">Sweden&nbsp; &nbsp;+46</option>
<option value="Switzerland +41">Switzerland&nbsp; &nbsp;+41</option>
<option value="Syria +963">Syria &nbsp; &nbsp;+963</option>
<option value="Taiwan +886">Taiwan&nbsp; &nbsp;+886</option>
<option value="Tajikistan +992">Tajikistan&nbsp; &nbsp;+992</option>
<option value="Tanzania +255">Tanzania&nbsp; &nbsp;+255</option>
<option value="Thailand +66">Thailand&nbsp; &nbsp;+66</option>
<option value="Timor-Leste +670">Timor-Leste&nbsp; &nbsp;+670</option>
<option value="Togo +228">Togo&nbsp; &nbsp;+228</option>
<option value="Tokelau +690">Tokelau&nbsp; &nbsp;+690</option>
<option value="Tonga +676">Tonga&nbsp; &nbsp;+676</option>
<option value="Trinidad and Tobago +1">Trinidad and Tobago&nbsp; &nbsp;+1868</option>
<option value="Tunisia +216">Tunisia&nbsp; &nbsp;+216</option>
<option value="Turkey +90">Turkey&nbsp; &nbsp;+90</option>
<option value="Turkmenistan +993">Turkmenistan&nbsp; &nbsp;+993</option>
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands&nbsp; &nbsp;+1649</option>
<option value="Tuvalu +688">Tuvalu&nbsp; &nbsp;+688</option>
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands&nbsp; &nbsp;+1340</option>
<option value="Uganda +256">Uganda&nbsp; &nbsp;+256</option>
<option value="Ukraine +380">Ukraine&nbsp; &nbsp;+380</option>
<option value="United Arab Emirates +971">United Arab Emirates &nbsp; &nbsp;+971</option>
<option value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option value="United States +1">United States&nbsp; &nbsp;+1</option>
<option value="Uruguay +598">Uruguay&nbsp; &nbsp;+598</option>
<option value="Uzbekistan +998">Uzbekistan&nbsp; &nbsp;+998</option>
<option value="Vanuatu +678">Vanuatu&nbsp; &nbsp;+678</option>
<option value="Vatican City +39">Vatican City&nbsp; &nbsp;+379</option>
<option value="Venezuela +58">Venezuela&nbsp; &nbsp;+58</option>
<option value="Vietnam +84">Vietnam&nbsp; &nbsp;+84</option>
<option value="Wallis and Futuna +681">Wallis and Futuna&nbsp; &nbsp;+681</option>
<option value="Western Sahara +212">Western Sahara &nbsp; &nbsp;+21228</option>
<option value="Yemen +967">Yemen&nbsp; &nbsp;+967</option>
<option value="Zambia +260">Zambia&nbsp; &nbsp;+260</option>
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select>
<input class="Inquiryphone" id="ticket_PhoneNo" name="PhoneNo"
placeholder="Phone number *" type="tel" value="" />
<div id="ticket_contact_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div>
</div>
<textarea name="other_travelers_names" style="height: 60px;" placeholder="If booking two or more tickets, please fill in other traveler name(s) here:(per passport, e.g.Smith Sarah Jean)."></textarea>
<p style="margin-top: 20px; margin-bottom: 10px;">For Elite Ticket bookings on December 31th, please provide your Chiang Mai hotel name and address for pick-up and drop-off purposes.</p>
<textarea name="additional_requirements" style="height: 60px;"></textarea>
<input name="total_price" id="totalPriceHidden" type="hidden" value="10000" />
<input name="product_code" id="cli_no" type="hidden" value="YDFW-AH"/>
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
<button class="sendButton" id="submit_ticket_button" name="submit_ticket_form"
type="button">Proceed to Payment</button>
<p style=" text-align: center;
font-style: italic;
margin-top: -15px;
line-height: 20px;"><strong>Once we receive your payment, our travel advisor will contact you within 24 hours and send you your e-ticket.</strong></p>
</form>
</div>
<script>
function calcTotalPrice(ticketPrice, adultNumber) {
var totalPrice = ticketPrice * adultNumber;
totalPrice = totalPrice.toFixed(2);
totalPriceHidden.value = totalPrice;
totalPriceText.innerText = '$' + totalPrice;
}
var adultNumberNode = document.getElementById("adultNumberValue");
var ticketTypeList = document.querySelectorAll("input[name='ticket_type']");
var totalPriceText = document.getElementById("totalPriceText");
var totalPriceHidden = document.getElementById("totalPriceHidden");
var adultNumberValue = parseInt(adultNumberNode.value);
var currentTicketPrice = 10000;
var vip_december30thRadio = document.getElementById("vip_december30th");
var vip_december31thRadio = document.getElementById("vip_december31th");
var ticket_type_elite_december30th_div = document.getElementById("ticket_type_elite_december30th");
var ticket_type_elite_december31th_div = document.getElementById("ticket_type_elite_december31th");
var vip_type_premium_december30th_div = document.getElementById("vip_type_premium_december30th");
var vip_type_premium_december31th_div = document.getElementById("vip_type_premium_december31th");
var ticket_type_standard_december30th_div = document.getElementById("ticket_type_standard_december30th");
var ticket_type_standard_december31th_div = document.getElementById("ticket_type_standard_december31th");
for (var i = 0; i < ticketTypeList.length; i++) {
var ticketTypeNode = ticketTypeList[i];
currentTicketPrice = parseInt(ticketTypeNode.getAttribute('data-price'));
if (ticketTypeNode.checked) {
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
ticketTypeNode.addEventListener('click', function (event) {
var currentTarget = event.currentTarget;
currentTicketPrice = parseInt(currentTarget.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
});
}
var ticketDateList = document.querySelectorAll("input[name='ticket_date']");
for (var i = 0; i < ticketDateList.length; i++) {
var ticketDateNode = ticketDateList[i];
ticketDateNode.addEventListener('click', function (event) {
var currentTarget = event.currentTarget;
if (currentTarget.id === 'december30th') {
setDecember30thTicket();
} else if (currentTarget.id === 'december31th') {
setDecember31thTicket();
}
});
}
function setDecember30thTicket() {
ticket_type_elite_december30th_div.style.display = '';
ticket_type_elite_december31th_div.style.display = 'none';
vip_type_premium_december30th_div.style.display = '';
vip_type_premium_december31th_div.style.display = 'none';
ticket_type_standard_december30th_div.style.display = '';
ticket_type_standard_december31th_div.style.display = 'none';
vip_december30thRadio.checked = true;
currentTicketPrice = parseInt(vip_december30thRadio.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
function setDecember31thTicket() {
ticket_type_elite_december30th_div.style.display = 'none';
ticket_type_elite_december31th_div.style.display = '';
vip_type_premium_december30th_div.style.display = 'none';
vip_type_premium_december31th_div.style.display = '';
ticket_type_standard_december30th_div.style.display = 'none';
ticket_type_standard_december31th_div.style.display = '';
vip_december31thRadio.checked = true;
currentTicketPrice = parseInt(vip_december31thRadio.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
var plusButton = document.getElementById("plusButton");
var minusButton = document.getElementById("minusButton");
plusButton.addEventListener('click', function (event) {
adultNumberValue = parseInt(adultNumberNode.value) + 1;
adultNumberNode.value = adultNumberValue;
calcTotalPrice(currentTicketPrice, adultNumberValue);
});
minusButton.addEventListener('click', function (event) {
var beforeValue = parseInt(adultNumberNode.value);
if (beforeValue > 1) {
adultNumberValue = beforeValue - 1;
adultNumberNode.value = adultNumberValue;
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
});
</script>
<script>
var submit_ticket_button = document.getElementById("submit_ticket_button");
var ticket_form = document.getElementById("ticket_form");
submit_ticket_button.addEventListener('click', function (event) {
var validateResult = validateTicketForm();
if (validateResult) {
if (typeof (grecaptcha) === "undefined") {
console.warn('grecaptcha is disabled.');
ticket_form.submit();
} else {
grecaptcha.enterprise.ready(async () => {
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', { action: 'ADD_TO_CART' });
var el = document.createElement("input");
el.type = "hidden";
el.name = "__grecaptcha_token__";
el.value = token;
ticket_form.appendChild(el);
ticket_form.submit();
submit_ticket_button.innerText = "Submitted successfully";
});
}
}
});
function validateTicketForm() {
var result = true;
var realnameVal = document.getElementById("ticket_realname").value;
var emailVal = document.getElementById("ticket_email").value;
var contactVal = document.getElementById("ticket_PhoneNo").value;
var realnameErrEl = document.getElementById("ticket_realname_errmsg");
var emailErrEl = document.getElementById("ticket_email_errmsg");
var emailVerifyErrEl = document.getElementById("ticket_email_verify_errmsg");
var contactErrEl = document.getElementById("ticket_contact_errmsg");
var ticketTypeErrEl = document.getElementById("ticket_type_errmsg");
realnameErrEl.style.display = 'none';
emailErrEl.style.display = 'none';
emailVerifyErrEl.style.display = 'none';
contactErrEl.style.display = 'none';
ticketTypeErrEl.style.display = 'none';
var selectedTicketType = false;
for (var i = 0; i < ticketTypeList.length; i++) {
var ticketTypeNode = ticketTypeList[i];
if (ticketTypeNode.checked) {
selectedTicketType = true;
}
}
if (!selectedTicketType) {
ticketTypeErrEl.style.display = '';
result = false;
}
if (realnameVal === '') {
realnameErrEl.style.display = '';
result = false;
}
if (emailVal === '') {
emailErrEl.style.display = '';
result = false;
} else {
var emailPattern = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
if (!emailPattern.test(emailVal)) {
emailVerifyErrEl.style.display = '';
result = false;
}
}
if (contactVal === '') {
contactErrEl.style.display = '';
result = false;
}
return result;
}
</script>

@ -49,65 +49,7 @@
</div> </div>
<?php } ?> <?php } ?>
<?php if(!empty($recommands['Tour E'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Tour E']->ic_url; ?>" id="bottom_tour_e_image_mobile"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour E']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour E']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour E']->ic_url; ?>" id="bottom_tour_e_title_mobile"><?php echo $recommands['Tour E']->ic_title; ?></a></div>
</div>
<?php } ?>
<?php if(!empty($recommands['Tour F'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Tour F']->ic_url; ?>" id="bottom_tour_f_image_mobile"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour F']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour F']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour F']->ic_url; ?>" id="bottom_tour_f_title_mobile"><?php echo $recommands['Tour F']->ic_title; ?></a></div>
</div>
<?php } ?>
<?php if(!empty($recommands['Tour G'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Tour G']->ic_url; ?>" id="bottom_tour_g_image_mobile"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour G']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour G']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour G']->ic_url; ?>" id="bottom_tour_g_title_mobile"><?php echo $recommands['Tour G']->ic_title; ?></a></div>
</div>
<?php } ?>
<?php if(!empty($recommands['Tour H'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Tour H']->ic_url; ?>" id="bottom_tour_h_image_mobile"><img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour H']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour H']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour H']->ic_url; ?>" id="bottom_tour_h_title_mobile"><?php echo $recommands['Tour H']->ic_title; ?></a></div>
</div>
<?php } ?>
<?php } ?> <?php } ?>
@ -174,73 +116,6 @@
<a href="<?php echo $recommands['Article D']->ic_url; ?>" id="bottom_info_d_title_mobile"> <?php echo $recommands['Article D']->ic_title; ?> </a> <a href="<?php echo $recommands['Article D']->ic_url; ?>" id="bottom_info_d_title_mobile"> <?php echo $recommands['Article D']->ic_title; ?> </a>
</div> </div>
</div>
<?php } ?>
<?php if(!empty($recommands['Article E'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Article E']->ic_url; ?>" id="bottom_info_e_image_mobile"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article E']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article E']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article E']->ic_url; ?>" id="bottom_info_e_title_mobile"> <?php echo $recommands['Article E']->ic_title; ?> </a>
</div>
</div>
<?php } ?>
<?php if(!empty($recommands['Article F'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Article F']->ic_url; ?>" id="bottom_info_f_image_mobile"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article F']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article F']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article F']->ic_url; ?>" id="bottom_info_f_title_mobile"> <?php echo $recommands['Article F']->ic_title; ?> </a>
</div>
</div>
<?php } ?>
<?php if(!empty($recommands['Article G'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Article G']->ic_url; ?>" id="bottom_info_g_image_mobile"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article G']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article G']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article G']->ic_url; ?>" id="bottom_info_g_title_mobile"> <?php echo $recommands['Article G']->ic_title; ?> </a>
</div>
</div>
<?php } ?>
<?php if(!empty($recommands['Article H'])){ ?>
<div class="nextarticle">
<a href="<?php echo $recommands['Article H']->ic_url; ?>" id="bottom_info_h_image_mobile"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article H']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article H']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article H']->ic_url; ?>" id="bottom_info_h_title_mobile"> <?php echo $recommands['Article H']->ic_title; ?> </a>
</div>
</div> </div>
<?php } ?> <?php } ?>

@ -54,64 +54,6 @@
</div></td> </div></td>
<?php } ?> <?php } ?>
<?php if(!empty($recommands['Tour E'])){ ?>
<td> <div class="nextarticle">
<a href="<?php echo $recommands['Tour E']->ic_url; ?>" id="bottom_tour_e_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour E']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour E']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour E']->ic_url; ?>" id="bottom_tour_e_title"><?php echo $recommands['Tour E']->ic_title; ?></a></div>
</div></td>
<?php } ?>
<?php if(!empty($recommands['Tour F'])){ ?>
<td> <div class="nextarticle">
<a href="<?php echo $recommands['Tour F']->ic_url; ?>" id="bottom_tour_f_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour F']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour F']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour F']->ic_url; ?>" id="bottom_tour_f_title"><?php echo $recommands['Tour F']->ic_title; ?></a></div>
</div></td>
<?php } ?>
<?php if(!empty($recommands['Tour G'])){ ?>
<td> <div class="nextarticle">
<a href="<?php echo $recommands['Tour G']->ic_url; ?>" id="bottom_tour_g_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour G']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour G']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour G']->ic_url; ?>" id="bottom_tour_g_title"><?php echo $recommands['Tour G']->ic_title; ?></a></div>
</div></td>
<?php } ?>
<?php if(!empty($recommands['Tour H'])){ ?>
<td> <div class="nextarticle">
<a href="<?php echo $recommands['Tour H']->ic_url; ?>" id="bottom_tour_h_image"><img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour H']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour H']->ic_title; ?>"></a>
<div class="tournextname"><a href="<?php echo $recommands['Tour H']->ic_url; ?>" id="bottom_tour_h_title"><?php echo $recommands['Tour H']->ic_title; ?></a></div>
</div> </td>
<?php } ?>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -144,7 +86,7 @@
<?php if(!empty($recommands['Article B'])){ ?> <?php if(!empty($recommands['Article B'])){ ?>
<td> <td>
<div class="nextarticle"> <div class="nextarticle">
<a href="<?php echo $recommands['Article B']->ic_url; ?>" id="bottom_info_b_image"></a> <img <a href="<?php echo $recommands['Article B']->ic_url; ?>" id="bottom_info_b_image"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article B']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Article B']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article B']->ic_title; ?>"></a> class="img-responsive" alt="<?php echo $recommands['Article B']->ic_title; ?>"></a>
@ -185,76 +127,10 @@
<a href="<?php echo $recommands['Article D']->ic_url; ?>" id="bottom_info_d_title"> <?php echo $recommands['Article D']->ic_title; ?> </a> <a href="<?php echo $recommands['Article D']->ic_url; ?>" id="bottom_info_d_title"> <?php echo $recommands['Article D']->ic_title; ?> </a>
</div> </div>
</div> </div>
</td> </td>
<?php } ?> <?php } ?>
<?php if(!empty($recommands['Article E'])){ ?>
<td>
<div class="nextarticle">
<a href="<?php echo $recommands['Article E']->ic_url; ?>" id="bottom_info_e_image"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article E']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article E']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article E']->ic_url; ?>" id="bottom_info_e_title"> <?php echo $recommands['Article E']->ic_title; ?> </a>
</div>
</div>
</td>
<?php } ?>
<?php if(!empty($recommands['Article F'])){ ?>
<td>
<div class="nextarticle">
<a href="<?php echo $recommands['Article F']->ic_url; ?>" id="bottom_info_f_image"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article F']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article F']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article F']->ic_url; ?>" id="bottom_info_f_title"> <?php echo $recommands['Article F']->ic_title; ?> </a>
</div>
</div>
</td>
<?php } ?>
<?php if(!empty($recommands['Article G'])){ ?>
<td>
<div class="nextarticle">
<a href="<?php echo $recommands['Article G']->ic_url; ?>" id="bottom_info_g_image"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article G']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article G']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article G']->ic_url; ?>" id="bottom_info_g_title"> <?php echo $recommands['Article G']->ic_title; ?> </a>
</div>
</div>
</td>
<?php } ?>
<?php if(!empty($recommands['Article H'])){ ?>
<td>
<div class="nextarticle">
<a href="<?php echo $recommands['Article H']->ic_url; ?>" id="bottom_info_h_image"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article H']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Article H']->ic_title; ?>"></a>
<div class="tournextname">
<a href="<?php echo $recommands['Article H']->ic_url; ?>" id="bottom_info_h_title"> <?php echo $recommands['Article H']->ic_title; ?> </a>
</div>
</div>
</td>
<?php } ?>
</tr> </tr>
</tbody> </tbody>
</table> </table>

@ -10,8 +10,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta content="yes" name="apple-mobile-web-app-capable"> <meta content="yes" name="apple-mobile-web-app-capable">
<meta name="apple-mobile-web-app-title" content="Asia Highlights - Since 2016!"> <meta name="apple-mobile-web-app-title" content="Asia Highlights - Since 2016!">
<meta name="keywords" content="<!--@KEYWORDS@-->">
<meta name="description" content="<!--@DESCRIPTION@-->"> <meta name="description" content="<!--@DESCRIPTION@-->">
<!--@Meta_Robots@-->
<!--@OG:IMAGE@--> <!--@OG:IMAGE@-->
<link rel="canonical" href="<!--@CANONICAL@-->"> <link rel="canonical" href="<!--@CANONICAL@-->">
<link rel="shortcut icon" href="https://data.asiahighlights.com/favicon.ico" /> <link rel="shortcut icon" href="https://data.asiahighlights.com/favicon.ico" />
@ -21,7 +21,6 @@
<!--@MAIN-CSS@--> <!--@MAIN-CSS@-->
<!--@ADDON-CSS@--> <!--@ADDON-CSS@-->
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) { <script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l] = w[l] || [];
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
@ -30,16 +29,6 @@
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f); f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-56CMWN3');</script> })(window, document, 'script', 'dataLayer', 'GTM-56CMWN3');</script>
<!-- End Google Tag Manager -->
<!-- Global site tag (gtag.js) - Google Ads: 996341496 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-996341496"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'AW-996341496');
</script>
</head> </head>
<body> <body>
@ -50,118 +39,25 @@
<!--PC头部--> <!--PC头部-->
<header class="headerbar" id="header"> <header class="headerbar" id="header">
<div class="topnavigation">
<div class="p_topnavigation">
<a href="/" class="p_toplogo"> <img src="https://data.asiahighlights.com/pic/logo-ah.png" <a href="/" class="p_toplogo"> <img src="https://data.asiahighlights.com/pic/logo-ah.png"
alt="Asiahighlights logo" class="asiahighlightslogo img-responsive"></a> alt="Asiahighlights logo" class="asiahighlightslogo img-responsive"></a>
<div class="p_topnavigation"> <nav>
<ul class="pctopnavi"> <ul class="pctopnavi">
<li class="dropdown"><a href="/japan/tours" class="p_topnavilink">Japan</a>
<div class=" dropdown-content">
<div class="inspirationinfo">
<div class="inspirationlist vacationtype">
<span class="inspirationtitle">Itinerary Ideas</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/japan/tours/tokyo-highlights">5 Days</a></li>
<li><a href="/japan/1-week-itinerary">7 Days</a></li>
<li><a href="/japan/tours/mountain-and-sea">8 Days</a></li>
<li><a href="/japan/tours/japan-highlights">9 Days</a></li>
<li><a href="/japan/tours/cherry-blossom-spring-mini-group">10 Days</a></li>
</ul>
<ul class="inspiration">
<li><a href="/japan/tours/classic-japan">11 Days</a></li>
<li><a href="/japan/tours/family-vacation">14 Days</a></li>
<li><a href="/japan/tours/japan-china-discovery">16 Days</a></li>
<li><a href="/japan/tours/summer-family-vacation">17 Days</a></li>
<li><a href="/japan/3-week-itineraries">3 Weeks</a></li>
</ul>
</div>
</div>
<div class="inspirationlist vacationtype">
<span class="inspirationtitle">Trip Plan</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/japan/plan-a-trip">Bucket List Trip</a></li>
<li><a href="/japan/how-to-plan-a-family-trip-to-japan">Family Trip</a></li>
<li><a href="/japan/plan-a-cherry-blossom-trip">Cherry Blossom Trip</a></li>
<li><a href="/japan/planning-a-summer-trip">Summer Trip</a></li>
<li><a href="/japan/plan-a-winter-trip">Winter Trip</a></li>
</ul>
<ul class="inspiration">
<li><a href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">Japan-South
Korea Trip</a></li>
<li><a href="/asia/plan-a-trip-to-china-and-japan">Japan-China Trip</a></li>
<li><a href="/asia/plan-a-trip-to-japan-and-thailand">Japan-Thailand
Trip</a></li>
</ul>
</div>
</div>
</div>
</div>
</li>
<li class="dropdown"><a href="/southeast-asia/tours/thailand-cambodia-and-vietnam"
class="p_topnavilink" id="thailand_vietnam_cambodia_pc">Thailand-Vietnam-Cambodia</a>
<div class=" dropdown-content">
<div class="inspirationinfo">
<div class="inspirationlist topthings">
<span class="inspirationtitle">Thailand-Vietnam-Cambodia:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/highlights-of-thailand-cambodia-and-vietnam">3
Weeks
</a></li>
<li><a href="/southeast-asia/tours/best-of-thailand-cambodia-and-vietnam">
2 Weeks</a></li>
<li><a href="/southeast-asia/tours/essential-thailand-cambodia-and-vietnam">12
Days</a></li>
</ul>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">Vietnam & Cambodia:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/vietnam-cambodia-family-tour">2 Weeks for
Family</a></li>
<li><a href="/southeast-asia/tours/vietnam-cambodia-mekong-cruise">2 Weeks for
Couple</a></li>
<li><a href="/southeast-asia/tours/cambodia-and-vietnam-highlights">12 Days</a>
</li>
<li><a href="/southeast-asia/tours/from-south-vietnam-to-north-cambodia">8 Days</a></li>
</ul>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">Vietnam & Thailand:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/classic-vietnam-and-thailand">2 Weeks</a>
</li>
</ul>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">Thailand & Cambodia:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/best-of-thailand-and-cambodia">11 Days</a>
</li>
</ul>
</div>
</div>
</div>
</li>
<li class="dropdown"><a class="p_topnavilink" href="/destinations">Destinations</a> <li class="dropdown"><a class="p_topnavilink" href="/destinations">Destinations</a>
<div class=" dropdown-content"> <div class=" dropdown-content">
<div class="inspirationinfo"> <div class="inspirationinfo">
<div class="inspirationlist navi_destination"> <div class="inspirationlist navi_destination">
<span class="inspirationtitle"><a href="/southeast-asia/tours">Southeast Asia:</a></span> <span class="inspirationtitle"><a href="/southeast-asia/tours">Southeast
Asia:</a></span>
<ul class="inspiration"> <ul class="inspiration">
<li><a href="/thailand">Thailand</a></li> <li><a href="/thailand">Thailand</a></li>
<li><a href="/thailand/tours/lantern-festival">Thailand Lantern Festival</a></li> <li><a href="/thailand/tours/lantern-festival">Thailand Lantern Festival</a>
</li>
<li><a href="/vietnam">Vietnam</a></li> <li><a href="/vietnam">Vietnam</a></li>
<li><a href="/cambodia">Cambodia</a></li> <li><a href="/cambodia">Cambodia</a></li>
<li><a href="/laos">Laos</a></li> <li><a href="/laos">Laos</a></li>
@ -177,8 +73,10 @@
<ul class="inspiration"> <ul class="inspiration">
<li><a href="/japan">Japan</a></li> <li><a href="/japan">Japan</a></li>
<li><a href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">South Korea</a></li> <li><a href="/south-korea">South Korea</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China (HK, Taiwan)</a></li> <li><a href="https://www.chinahighlights.com/tour/" target="_blank"
rel="nofollow">China (HK,
Taiwan)</a></li>
<li><a href="/asia/tours/mongolia-china-and-thailand">Mongolia</a></li> <li><a href="/asia/tours/mongolia-china-and-thailand">Mongolia</a></li>
</ul> </ul>
@ -191,20 +89,10 @@
<li><a href="/nepal">Nepal</a></li> <li><a href="/nepal">Nepal</a></li>
<li><a href="/bhutan">Bhutan</a></li> <li><a href="/bhutan">Bhutan</a></li>
<li><a href="/srilanka">Sri Lanka</a></li> <li><a href="/srilanka">Sri Lanka</a></li>
</ul> </ul>
</div> </div>
<div class="inspirationlist navi_destination">
<span class="inspirationtitle"><a href="https://www.globalhighlights.com/middle-east/tours" target="_blank">Middle East:</a></span>
<ul class="inspiration">
<li><a href="https://www.globalhighlights.com/egypt/tours" target="_blank">Egypt</a></li>
<li><a href="https://www.globalhighlights.com/israel/plan-a-trip" target="_blank">Israel</a></li>
<li><a href="https://www.globalhighlights.com/middle-east/tours/12-day-egypt-jordan" target="_blank">Jordan</a></li>
<li><a href="https://www.globalhighlights.com/turkey/tours" target="_blank">Turkey</a></li>
<li><a href="https://www.globalhighlights.com/morocco/tours" target="_blank">Morocco</a></li>
</ul>
</div>
<div class="inspirationlist navi_destination"> <div class="inspirationlist navi_destination">
<span class="inspirationtitle">Central Asia:</span> <span class="inspirationtitle">Central Asia:</span>
<ul class="inspiration"> <ul class="inspiration">
@ -214,74 +102,8 @@
</div> </div>
</div> </div>
</li> </li>
<li class="dropdown"><a class="p_topnavilink">Itinerary Ideas</a> <li class="dropdown"><a href="/tours" class="p_topnavilink">Tours</a></li>
<div class=" dropdown-content"> <li class="dropdown"><a class="p_topnavilink" href="/itinerary-ideas">Itinerary Ideas</a></li>
<div class="inspirationinfo">
<div class="inspirationlist topthings">
<span class="inspirationtitle">7-12 Days Itinerary</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/japan/1-week-itinerary">1 Week in Japan</a></li>
<li><a href="/vietnam/7-days-itinerary">1 Week in Vietnam</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/8-day-china-itinerary.htm"
target="_blank">8 Days in China</a></li>
<li><a href="/japan/10-day-itineraries">10 Days in Japan</a></li>
<li><a href="/vietnam/10-days-itinerary">10 Days in Vietnam</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/10-days-china-itinerary.htm"
target="_blank">10 Days in China</a></li>
<li><a href="/japan/12-day-itineraries">12 Days in Japan</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/12-days-china-itinerary.htm"
target="_blank">12 Days in China</a></li>
</ul>
</div>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">2-Week Itinerary</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/southeast-asia/2-weeks-itinerary ">Southeast Asia</a></li>
<li><a href="/japan/2-week-itineraries">Japan</a></li>
<li><a href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">
Japan and South Korea</a></li>
<li><a href="/thailand/2-weeks-in-thailand">Thailand</a></li>
<li><a href="/vietnam/2-weeks-itinerary">Vietnam</a></li>
<li><a href="/india/2-week-itinerary">India</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/2-weeks-china-itinerary.htm"
target="_blank">China</a></li>
</ul>
</div>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">3-Week Itinerary</span>
<ul class="inspiration">
<li><a href="/southeast-asia/3-weeks-itinerary">Southeast Asia</a></li>
<li><a href="/japan/3-week-itineraries">Japan</a></li>
<li><a href="/vietnam/3-weeks-itinerary">Vietnam</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/3-weeks-china-itinerary.htm"
target="_blank">China</a></li>
<li><a href="/southeast-asia/trip-to-thailand-cambodia-vietnam">Thailand,
Cambodia, Vietnam</a></li>
<li><a href="/asia/tours/china-and-vietnam">China, Vietnam</a></li>
<li><a href="/asia/tours/china-nepal-and-india">China, Nepal, India</a></li>
<li><a href="/asia/tours/china-laos-thailand">China, Laos, Thailand</a></li>
</ul>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">4-Week Itinerary</span>
<ul class="inspiration">
<li><a href="/southeast-asia/4-weeks-itinerary">Southeast Asia</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/4-week-china-itinerary.htm"
target="_blank">China</a></li>
</ul>
</div>
</div>
</div>
</li>
<li class="dropdown"><a href="/about-us" class="p_topnavilink">About Us</a> <li class="dropdown"><a href="/about-us" class="p_topnavilink">About Us</a>
<div class=" dropdown-content"> <div class=" dropdown-content">
<div class="inspirationinfo"> <div class="inspirationinfo">
@ -291,11 +113,15 @@
<li><a href="/reviews" id="all_reviews">Asia Highlights Travel Reviews</a></li> <li><a href="/reviews" id="all_reviews">Asia Highlights Travel Reviews</a></li>
</ul> </ul>
<ul class="inspiration" style="width: 260px;"> <ul class="inspiration" style="width: 260px;">
<li><a href="/reviews/thailand" id="thailand_reviews">Thailand Travel Reviews</a></li> <li><a href="/reviews/thailand" id="thailand_reviews">Thailand Travel
<li><a href="/reviews/vietnam" id="veitnam_reviews">Vietnam Travel Reviews</a></li> Reviews</a></li>
<li><a href="/reviews/cambodia" id="cambodia_reviews">Cambodia Travel Reviews</a></li> <li><a href="/reviews/vietnam" id="veitnam_reviews">Vietnam Travel Reviews</a>
</li>
<li><a href="/reviews/cambodia" id="cambodia_reviews">Cambodia Travel
Reviews</a></li>
<li><a href="/reviews/japan" id="japan_reviews">Japan Travel Reviews</a></li> <li><a href="/reviews/japan" id="japan_reviews">Japan Travel Reviews</a></li>
<li><a href="/reviews/myanmar" id="myanmar_reviews">Myanmar Travel Reviews</a></li> <li><a href="/reviews/myanmar" id="myanmar_reviews">Myanmar Travel Reviews</a>
</li>
<li><a href="/reviews/china" id="china_reviews">China Travel Reviews</a></li> <li><a href="/reviews/china" id="china_reviews">China Travel Reviews</a></li>
</ul> </ul>
</div> </div>
@ -311,21 +137,23 @@
<input type="hidden" value="001281624266240652297:cl1fy1cxepi" name="cx"> <input type="hidden" value="001281624266240652297:cl1fy1cxepi" name="cx">
<input type="hidden" value="FORID:9" name="cof"> <input type="hidden" value="FORID:9" name="cof">
<input type="text" onfocus="this.value = ''" class="strkeys" <input type="text" onfocus="this.value = ''" class="strkeys"
placeholder="Search Asia Highlights" name="q" style="width: 165px;"> placeholder="Search Asia Highlights" name="q">
<input type="image" class="submits" <input type="image" class="submits"
src="https://data.chinahighlights.com/pic/pc-top-navigation-web-search-bg.png" src="https://data.chinahighlights.com/pic/pc-top-navigation-web-search-bg.png"
width="25px"> width="25px" alt="site search button">
<input type="hidden" name="__ftoken__" <input type="hidden" name="__ftoken__"
value="MTU5ODMzNDc2NDQ0NA==.3664784f0395175e7de44382781cd7f7cb647e2a"> value="MTU5ODMzNDc2NDQ0NA==.3664784f0395175e7de44382781cd7f7cb647e2a">
</form> </form>
</div> </div>
</li> </li>
</ul> </ul>
</div> </nav>
</div> </div>
</header> </header>
<div class="updated_news">How to Plan an Incredible Family Trip to Japan in 2024/2025. <a
href="/japan/how-to-plan-a-family-trip-to-japan">Learn more.</a></div>
<!--PC头部 结束--> <!--PC头部 结束-->
<!--@HEAD_1@--> <!--@HEAD_1@-->
@ -333,24 +161,35 @@
<!--PC正文--> <!--PC正文-->
<div class="main_content"> <div class="main_content">
<div id="main_content_pc"> <div id="main_content_pc">
<div class="pc_content"> <main>
<!--@CUSTOM-CONENT@--> <div class="pc_content">
</div> <!--@CUSTOM-CONENT@-->
<div class="right_brand_info"> </div>
<h2>Why Travel with Asia Highlights (98.8% positive customer reviews among 10,000+)</h2> </main>
<ul>
<li class="tailormade"><strong>Unique experiences tailored to your interests:</strong> Enjoy a <aside>
premium trip that goes beyond the typical tourist attractions.</li> <?php if ($meta_show_advertise == 'yes' || empty($meta_show_advertise)) {?>
<li class="worryfree"><strong>Hassle-free travel and peace of mind: </strong>Every aspect of your <div class="right_brand_info">
trip will be carefully planned and organized by your 1:1 travel consultant. <h3>Why Asia Highlights (10,000+ reviews & 98.8% 5-star rating)</h3>
</li>
<li class="norisk"><strong>Experienced and knowledgeable guides:</strong> Your guides will be local <ul>
and love to work for travelers' smiles.</li> <li class="brand_title">Save Your Time:</li>
</ul> <li>Less research, more enjoyment!</li>
</div> <li>Real-time 1V1 expert planning</li>
<!--@TIPS-RIGHT@--> <li class="brand_title">Maximize Your Flexibility:</li>
<!--@TIPS-RIGHT-LIST@--> <li>Personal local guide and ride</li>
<div class="info_tm_button"><a href="/forms/tailormade" id="create_my_trip_button_pc">Create my trip</a> <li>Explore at your own pace</li>
<li class="brand_title">Celebrate Your Journeys:</li>
<li>Specially-crafted family adventures</li>
<li>Celebrate milestones with style!</li>
</ul>
</div>
<?php } ?>
<!--@TIPS-RIGHT@-->
<!--@TIPS-RIGHT-LIST@-->
</aside>
<div class="info_tm_button"><a href="/forms/tailormade?product_code=" id="create_my_trip_button_pc">Create
my trip</a>
</div> </div>
</div> </div>
@ -362,247 +201,216 @@
<!--PC底部--> <!--PC底部-->
<div class="infotailor"> <div class="infotailor">
<span class="infotailorword">We are here to help you...<br> Start planning your tailor-made tour with 1-1 help <span class="infotailorword">
from our travel advisors. <span class="bottomtailor">Start planning your tailor-made tour with 1-1 help
from our travel advisors.</span>
<span class="infotailormade"><a href="/forms/tailormade?product_code=">Create My Trip</a></span> <span class="infotailormade"><a href="/forms/tailormade?product_code=">Create My Trip</a></span>
</span> </span>
<div class="tp_banner">4.9 Excellent<img src="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" <div class="tp_banner">4.9 Excellent<img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
class="img-responsive" alt="TrustPilot rating" width="100px"> originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" class="img-responsive"
<img src="https://data.asiahighlights.com/image/about/logo-white.png" class="img-responsive" alt="TrustPilot rating" width="100px">
<img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="https://data.asiahighlights.com/image/about/logo-white.png" class="img-responsive"
alt="TrustPilot Logo" width="73px"> alt="TrustPilot Logo" width="73px">
</div> </div>
</div> </div>
<div class="newsletter_form"> <div class="newsletter_form">
<div class="list_content"> <div class="list_content">
<h2 style="padding-top: 0; text-align: center;">Sign up to Our Newsletter</h2> <h2 style="padding-top: 0; text-align: center;">Sign up to Our Newsletter</h2>
<p style="text-align: center;">Be the first to receive exciting updates, exclusive promotions, and valuable travel tips from our <p style="text-align: center;">Be the first to receive exciting updates, exclusive promotions, and valuable
team of experts. </p> travel tips from our
<form action="https://www.asiahighlights.com/orders/newsletter_save" method="post" id="newsletter_form" name="newsletter_form" novalidate=""> team of experts. </p>
<label id="name_area"> <span class="infotailormade"><a href="/newsletter">Click to sign up</a></span>
<input type="text" name="name" id="newsletter_realname" class="contact_name" placeholder="* Your name">
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_realname_errmsg">Please fill up your name.</div>
</label>
<label id="email_area">
<input type="email" class="safyemail autoemail ui-autocomplete-input contact_email" name="email" id="newsletter_email" autocomplete="off" placeholder="* Email">
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_email_errmsg">Please fill up your email address.</div>
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_email_verify_errmsg">Please verify your email.</div>
</label>
<button id="submit_newsletter" type="button" class="sendInquiry">Inspire Me</button>
</form>
</div> </div>
</div> </div>
<div class="bottom_why_us"> <div class="bottom_why_us">
<h2>The Asia Highlights Experience</h2> <h2>Why Asia Highlights</h2>
<div class="table-responsive"> <div class="table-responsive">
<table class="why_us_table"> <table class="why_us_table">
<tbody> <tbody>
<tr> <tr>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-1.png" <div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif"
alt="1-to-1 Expert Planning" class="img-responsive"> loader="lazy"
<h3>1-to-1 Expert Planning</h3> originalsrc="https://images.asiahighlights.com/allpicture/2024/02/2fa10d72338f4942af532a909a486215_cut_100x100_241.png"
<p>Your tour will be tailor-made to suit you by a destination expert. Your personal alt="Customize Your Tour" class="img-responsive" width="100" height="100" />
travel advisor will always reply within 24 hours.</p> </div>
<h3>Customize Your Tour</h3>
<ul class="infolist">
<li>Travel Advisors Rooted in Asia</li>
<li>Instant Response, No More Waits! </li>
<li>Direct Connections, Supreme Values</li>
</ul>
</div> </div>
</td> </td>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-2.png" <div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif"
alt="Personal Journeys" class="img-responsive"> loader="lazy"
<h3>Personal Journeys</h3> originalsrc="https://images.asiahighlights.com/allpicture/2024/02/128f3292b9054cd295eeaf0a6223ee93_cut_100x100_241.png"
<p>Enjoy having your own personal local guide and ride. Explore destinations at your own alt="Maximize Your Flexibility" class="img-responsive" width="100"
pace. Have as much flexibility as possible.</p> height="100" /></div>
<h3>Maximize Your Flexibility</h3>
<ul class="infolist">
<li>Your own personal guide and ride. </li>
<li> Explore at your own pace. </li>
<li> Unparalleled flexibility, impossible on a group tour.</li>
</ul>
</div> </div>
</td> </td>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-3.png" <div class="whyus_image"><img src="https://data.asiahighlights.com/grey.gif"
alt="Authentic Experiences" class="img-responsive"> loader="lazy"
<h3>Authentic Experiences</h3> originalsrc="https://images.asiahighlights.com/allpicture/2024/02/93cce481fbbb427882ce36285d73119d_cut_100x100_241.png"
<p>Go beyond the sightseeing. Understand the destinations by practicing the local alt="Ensure Your Satisfactory" class="img-responsive" width="100"
culture and interacting with local people.</p> height="100" /></div>
<h3>Ensure Your Satisfactory</h3>
<ul class="infolist">
<li>The Top 20% nationwide guides at your service.</li>
<li>20% more space on your group's transportation.</li>
<li> 24/7 emergency support.</li>
</ul>
</div> </div>
</td> </td>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-4.png" <div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif"
alt="One-Stop Service" class="img-responsive"> loader="lazy"
<h3>One-Stop Service</h3> originalsrc="https://images.asiahighlights.com/allpicture/2024/02/03f93f0c74d548bf9ebd55796545c25b_cut_100x100_241.png"
<p>Leave all the booking work to us, including international and internal alt="Celebrate Your Journey" class="img-responsive" width="100" height="100" />
transportation, visas, hotels, meals, and activities.</p> </div>
<h3>Celebrate Your Journey</h3>
<ul class="infolist">
<li>Family adventures</li>
<li> Celebrate milestones with style!</li>
<li> Photographer service for special moments</li>
</ul>
</div> </div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div class="bottom_destinations"> <div class="bottom_destinations">
<div class="footerbox"> <div class="footerbox">
<h2 style=" <h2 style="
margin-top: 0; margin-top: 0;
text-align: center; text-align: center;
">Where Can We Take You Today?</h2> ">Where Can We Take You Today?</h2>
<div class="listtour">
<div class="destination_links"> <div class="destination_links">
<ul> <ul>
<li><a href="/southeast-asia/tours">Southeast Asia Tours</a></li> <li><a href="https://www.chinahighlights.com/" target="_blank" rel="nofollow">China</a></li>
<li><a href="/japan/tours">Japan Tours</a></li> <li><a href="https://www.globalhighlights.com/europe" target="_blank" rel="nofollow">Europe</a></li>
<li><a href="/thailand/tours">Thailand Tours</a></li> <li><a href="https://www.globalhighlights.com/middle-east/tours" target="_blank"
<li><a href="/vietnam/tours">Vietnam Tours</a></li> rel="nofollow">Middle East </a>
</li>
</ul> <li><a href="https://www.globalhighlights.com/african-safari-tours/tours" target="_blank"
</div> rel="nofollow">African
<div class="destination_links"> Safari</a></li>
<ul> </ul>
<li><a href="/cambodia/tours">Cambodia Tours</a></li> </div>
<li><a href="/singapore">Singapore</a></li>
<li><a href="/indonesia/bali/tours">Bali Tours</a></li>
<li><a href="/laos/trip-plan">Laos</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/india/tours">India Tours</a></li>
<li><a href="/nepal">Nepal</a></li>
<li><a href="/bhutan">Bhutan</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
</ul> </div>
</div> </div>
<div class="destination_links">
<ul>
<li><a href="/myanmar/tours">Myanmar Tours</a></li> <div class="infobottom">
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia Tours</a></li> <div class="footerbox">
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China Tours</a></li> <div class="list_content">
</ul> <div class="aboutusleft">
</div> <div class="bottomaboutus">
<img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="https://images.asiahighlights.com/allpicture/2024/03/1437fad7aabf4cf297ae5cefce15b241_cut_1191x842_241.png"
width="170" height="121" alt="Asia Highlights' logo"
style="float: left; margin-right: 10px; margin-bottom: 10px; width: 170px; height: 121px;">
<div class="aboutusinfo">
<img src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png"
style="display: block; margin-bottom: 10px;" width="104" height="20" alt="tour review">
Rated 4.9 out of 5 | 98.8% Excellence<br>
China Highlights International<br> Travel Service Co., LTD
</div>
</div>
</div>
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="https://www.globalhighlights.com/egypt/tours" target="_blank">Egypt Tours</a>
</li>
</ul>
</div> </div>
<div class="destination_links"> <div class="aboutusright company">
<div class="bottompctitle">Company</div>
<ul> <ul>
<li><a href="https://www.globalhighlights.com/morocco/tours" target="_blank">Morocco <li><a href="/about-us">About us</a></li>
Tours</a></li> <li><a href="/travel-agents">Travel Agents</a></li>
<li><a href="/reviews">Reviews</a></li>
<li><a href="/contact-us">Contact us</a></li>
<li><a href="/about-us/loyalty-program">Loyalty Program</a></li>
<li><a href="/privacy">Privacy Policy</a></li>
<li><a href="/terms-of-use">Terms</a></li>
</ul> </ul>
</div> </div>
<div class="destination_links"> <div class="aboutusright language">
<div class="bottompctitle">Language</div>
<ul> <ul>
<li><a href="https://www.globalhighlights.com/turkey/tours" target="_blank">Turkey Tours</a>
</li> <li><a href="https://www.globalhighlights.com/" target="_blank" rel="nofollow">Global</a></li>
<li><a href="https://www.chinarundreisen.com/" target="_blank" rel="nofollow">Deutsch</a></li>
<li><a href="https://www.voyageschine.com/" target="_blank" rel="nofollow">Français</a></li>
<li><a href="https://www.viaje-a-china.com/" target="_blank" rel="nofollow">Español</a></li>
<li><a href="https://www.viaggio-in-cina.it/" target="_blank" rel="nofollow">Italiano</a></li>
<li><a href="https://www.chinahighlights.ru/" target="_blank" rel="nofollow">Русский</a></li>
<li><a href="https://www.arachina.com/" target="_blank" rel="nofollow">日本語</a></li>
</ul> </ul>
</div> </div>
<div class="destination_links"> <div class="aboutusright followus">
<div class="bottompctitle">Follow Us</div>
<ul> <ul>
<li><a href="https://www.globalhighlights.com/jordan/plan-a-trip" target="_blank">Jordan</a> <li style="margin-bottom: 30px;"><a href="https://www.facebook.com/AsiaHighlights/"
rel="nofollow" title="Follow us on Facebook" class="fb" target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px"
height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30"
xml:space="preserve">
<path id="facebook" fill="#ffffff"
d="M17.252,11.106V8.65c0-0.922,0.611-1.138,1.041-1.138h2.643V3.459l-3.639-0.015 c-4.041,0-4.961,3.023-4.961,4.961v2.701H10v4.178h2.336v11.823h4.916V15.284h3.316l0.428-4.178H17.252z">
</path>
</svg>Facebook</a></li>
<li style="margin-bottom: 30px;"><a href="https://www.pinterest.com/AsiaHighlights/_saved/"
rel="nofollow" title="Share us on Pinterest" target="_blank"><svg id="svg--pinterest"
viewBox="-180 -180 850 850">
<path id="pinterest" fill="#ffffff"
d="M430.149,135.248C416.865,39.125,321.076-9.818,218.873,1.642 C138.071,10.701,57.512,76.03,54.168,169.447c-2.037,57.029,14.136,99.801,68.399,111.84 c23.499-41.586-7.569-50.676-12.433-80.802C90.222,77.367,252.16-6.718,336.975,79.313c58.732,59.583,20.033,242.77-74.57,223.71 c-90.621-18.179,44.383-164.005-27.937-192.611c-58.793-23.286-90.013,71.135-62.137,118.072 c-16.355,80.711-51.557,156.709-37.3,257.909c46.207-33.561,61.802-97.734,74.57-164.704 c23.225,14.136,35.659,28.758,65.268,31.038C384.064,361.207,445.136,243.713,430.149,135.248z">
</path>
</svg>Pinterest</a>
</li> </li>
<li style="margin-bottom: 30px;"><a href="https://www.instagram.com/asiahighlights/"
rel="nofollow" title="Follow us on Instagram" class="linkin" target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px"
height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30"
xml:space="preserve">
<path id="instagram" fill="#ffffff"
d="M22.107,3.415H7.893c-2.469,0-4.479,2.007-4.479,4.477v4.73v9.486c0,2.469,2.01,4.479,4.479,4.479h14.215 c2.469,0,4.479-2.01,4.479-4.479v-9.486v-4.73C26.586,5.421,24.576,3.415,22.107,3.415 M23.393,6.086l0.512-0.004v0.511v3.416 l-3.916,0.014l-0.012-3.928L23.393,6.086z M11.693,12.622c0.742-1.028,1.945-1.7,3.307-1.7s2.564,0.672,3.307,1.7 c0.484,0.67,0.771,1.49,0.771,2.379c0,2.248-1.828,4.078-4.078,4.078c-2.248,0-4.078-1.83-4.078-4.078 C10.922,14.112,11.211,13.292,11.693,12.622 M24.328,22.107c0,1.225-0.994,2.219-2.221,2.219H7.893 c-1.225,0-2.219-0.994-2.219-2.219v-9.486h3.459C8.832,13.356,8.664,14.159,8.664,15c0,3.494,2.842,6.335,6.336,6.335 s6.336-2.842,6.336-6.335c0-0.842-0.17-1.645-0.467-2.379h3.459V22.107z">
</path>
</svg> Instagram </a></li>
</ul> </ul>
</div> </div>
</div> <div class="feature">
</div> <div class="bottompctitle">Featured on</div>
</div> <a href="/about-us/who-recommended"><img src="https://data.asiahighlights.com/grey.gif"
loader="lazy"
<div class="infobottom"> originalsrc="https://images.chinahighlights.com/allpicture/2024/02/c858c422f4aa4702ba62eeeccc29156f_cut_1135x66_241.jpg"
<div class="footerbox"> alt="China Highlights was featured on these medias." width="1135" height="66"></a>
<div class="aboutusleft">
<div class="bottomaboutus">
<div class="bottompctitle">About Us</div>
<div class="aboutusinfo">At Asia Highlights, we are committed to providing you a premium,
quality private tour, whether it's a milestone trip, family trip, or bucketlist trip — your
planning will be made easy with just one specialist throughout. <a href="/about-us">Know more
...</a>
<div class="trustPilotIconBig">
<img class="img-responsive" src="https://data.asiahighlights.com/grey.gif"
originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" loader="lazy"
style="margin: 10px 0; width:160px;">
Rated
4.9 out of 5 | Excellent<br>
China Highlights International Travel Service Co., LTD<br>
Corporate Number: 914503003486045699
</div>
</div>
</div>
</div>
<div class="aboutusright">
<div class="bottompctitle">Featured on</div>
<img src="https://data.asiahighlights.com/grey.gif" loader="lazy" width="436" height="250"
style="width: 70%;"
originalsrc="https://data.chinahighlights.com/pic/guide/info-template-feature-on.png" alt="Medias"
class="img-responsive bottomfeature" style="opacity: 1; transition: opacity 0.5s ease-in-out 0s;">
</div>
<div class="clear"></div>
<div class="bottomaboutuslinks">
<div class="bottomlinksleft">
<ul class="withBorder">
<li><a href="/travel-agents">Travel Agents</a></li>
<li><a href="/about-us" rel="nofollow">About us</a></li>
<li><a href="/reviews" rel="nofollow">Reviews</a></li>
<li><a href="/about-us/history" rel="nofollow">History</a></li>
<li><a href="/about-us/our-differences" rel="nofollow">Our Differences</a></li>
<li><a href="/contact-us" rel="nofollow">Contact Us</a></li>
</ul>
</div> </div>
<ul class="socialmedias"> <p style="margin-top: 20px; padding-bottom: 0;"><strong>Address:</strong> Building 6, Chuangyi Business
<li><a href="https://www.facebook.com/AsiaHighlights/" rel="nofollow" title="Follow us on Facebook" Park, 70 Qilidian Road, Guilin, Guangxi, 541004, China</p>
class="fb" target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px"
viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
<path id="facebook" fill="#ffffff"
d="M17.252,11.106V8.65c0-0.922,0.611-1.138,1.041-1.138h2.643V3.459l-3.639-0.015 c-4.041,0-4.961,3.023-4.961,4.961v2.701H10v4.178h2.336v11.823h4.916V15.284h3.316l0.428-4.178H17.252z">
</path>
</svg>Facebook
</a></li>
<li><a href="https://www.instagram.com/asiahighlights/" rel="nofollow"
title="Follow us on Instagram" target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px"
viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
<path id="instagram" fill="#ffffff"
d="M22.107,3.415H7.893c-2.469,0-4.479,2.007-4.479,4.477v4.73v9.486c0,2.469,2.01,4.479,4.479,4.479h14.215 c2.469,0,4.479-2.01,4.479-4.479v-9.486v-4.73C26.586,5.421,24.576,3.415,22.107,3.415 M23.393,6.086l0.512-0.004v0.511v3.416 l-3.916,0.014l-0.012-3.928L23.393,6.086z M11.693,12.622c0.742-1.028,1.945-1.7,3.307-1.7s2.564,0.672,3.307,1.7 c0.484,0.67,0.771,1.49,0.771,2.379c0,2.248-1.828,4.078-4.078,4.078c-2.248,0-4.078-1.83-4.078-4.078 C10.922,14.112,11.211,13.292,11.693,12.622 M24.328,22.107c0,1.225-0.994,2.219-2.221,2.219H7.893 c-1.225,0-2.219-0.994-2.219-2.219v-9.486h3.459C8.832,13.356,8.664,14.159,8.664,15c0,3.494,2.842,6.335,6.336,6.335 s6.336-2.842,6.336-6.335c0-0.842-0.17-1.645-0.467-2.379h3.459V22.107z">
</path>
</svg>
Instagram </a></li>
<li><a href="https://www.pinterest.com/AsiaHighlights/_saved/" rel="nofollow"
title="Share us on Pinterest" target="_blank"><svg id="svg--pinterest"
viewBox="-180 -180 850 850" style="
fill: #fff;
width: 30px;
">
<path d="M430.149,135.248C416.865,39.125,321.076-9.818,218.873,1.642
C138.071,10.701,57.512,76.03,54.168,169.447c-2.037,57.029,14.136,99.801,68.399,111.84
c23.499-41.586-7.569-50.676-12.433-80.802C90.222,77.367,252.16-6.718,336.975,79.313c58.732,59.583,20.033,242.77-74.57,223.71
c-90.621-18.179,44.383-164.005-27.937-192.611c-58.793-23.286-90.013,71.135-62.137,118.072
c-16.355,80.711-51.557,156.709-37.3,257.909c46.207-33.561,61.802-97.734,74.57-164.704
c23.225,14.136,35.659,28.758,65.268,31.038C384.064,361.207,445.136,243.713,430.149,135.248z"></path>
</svg>Pinterest</a>
</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@ -614,100 +422,10 @@
originalsrc="https://data.chinahighlights.com/image/asia/asia-highlights-bottom-logo.png" width="114" originalsrc="https://data.chinahighlights.com/image/asia/asia-highlights-bottom-logo.png" width="114"
height="71" loader="lazy" class="img-responsive bottomlogopc"> height="71" loader="lazy" class="img-responsive bottomlogopc">
<span class="bottomcopyright">© 2016-2024 Asia Highlights — Discovery Your Way! </span> <span class="bottomcopyright">© 2016-2024 Asia Highlights — Discovery Your Way! </span>
<span class="bottomprivacy"><a href="/privacy">Privacy Policy</a> | <a href="/terms-of-use">Terms</a></span>
</div> </div>
</div> </div>
<div class="web_cookie" id='gotIdArea' style='display: none;'>
<p>Asia Highlights uses cookies to give you the best possible service. If you continue browsing, you agree to
the use of cookies. More details can be found in our <a href="/privacy">privacy policy</a>.</p>
<div class="cookie_close" id="gotItBtn" style="float: right;
padding: 5px 10px;
cursor: pointer;
background: #fff;
font-weight: 600;
font-size: 16px;">X</div>
</div>
<script>
var GOT_IT_KEY = '__asia_highlights_you_agree_to_use_of_cookies__';
if (window.localStorage && localStorage.getItem(GOT_IT_KEY)) {
console.info('If you continue browsing, you agree to the use of cookies.');
} else {
document.getElementById('gotIdArea').style.display = '';
if (window.localStorage) {
localStorage.setItem(GOT_IT_KEY, '1');
}
var gotItBtn = document.getElementById('gotItBtn');
gotItBtn.addEventListener('click', function (evt) {
document.getElementById('gotIdArea').style.display = 'none';
});
setTimeout(function () {
document.getElementById('gotIdArea').style.display = 'none';
}, 10000);
}
</script>
<!--newsletter表单 JS-->
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
var submitbutton = document.getElementById("submit_newsletter");
var newsletterForm = document.getElementById("newsletter_form");
submitbutton.addEventListener('click', function(event) {
var validateResult = validateNewsletterForm();
if (validateResult) {
if (typeof(grecaptcha) === "undefined") {
console.warn('grecaptcha is disabled.');
newsletterForm.submit();
} else {
grecaptcha.enterprise.ready(async () => {
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', {action: 'ADD_TO_CART'});
var el = document.createElement("input");
el.type = "hidden";
el.name = "__grecaptcha_token__";
el.value = token;
newsletterForm.appendChild(el);
newsletterForm.submit();
submitbutton.innerText = "Submitted successfully";
});
}
}
});
});
function validateNewsletterForm() {
var result = true;
var realnameVal = document.getElementById("newsletter_realname").value;
var emailVal = document.getElementById("newsletter_email").value;
var realnameErrEl = document.getElementById("newsletter_realname_errmsg");
var emailErrEl = document.getElementById("newsletter_email_errmsg");
var emailVerifyErrEl = document.getElementById("newsletter_email_verify_errmsg");
realnameErrEl.style.display = 'none';
emailErrEl.style.display = 'none';
emailVerifyErrEl.style.display = 'none';
if (realnameVal === '') {
realnameErrEl.style.display = '';
result = false;
}
if (emailVal === '') {
emailErrEl.style.display = '';
result = false;
} else {
var emailPattern = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
if (!emailPattern.test(emailVal)) {
emailVerifyErrEl.style.display = '';
result = false;
}
}
return result;
}
</script>
<!--PC底部 结束--> <!--PC底部 结束-->

@ -1,13 +1,12 @@
<div class="infopage_ad_content"> <div class="infopage_ad_content">
<?php if (!empty($recommands['Content Article A']) || !empty($recommands['Content Article B']) || !empty($recommands['Content Article C']) || !empty($recommands['Content Article D'])) { ?> <?php if (!empty($recommands['Content Article A']) || !empty($recommands['Content Article B']) || !empty($recommands['Content Article C']) || !empty($recommands['Content Article D'])) { ?>
<div class="content_article_title">You might be interested in:</div> <div class="content_article_title">You might be interested in:</div>
<?php if (!empty($recommands['Content Article A'])) { ?> <?php if (!empty($recommands['Content Article A'])) { ?>
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Article A']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article A']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article A']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article A']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article A']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article A']->ic_title; ?>"></a>
@ -24,7 +23,7 @@
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Article B']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article B']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article B']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article B']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article B']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article B']->ic_title; ?>"></a>
@ -42,7 +41,7 @@
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Article C']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article C']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article C']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article C']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article C']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article C']->ic_title; ?>"></a>
@ -59,7 +58,7 @@
<div class="infopage_ad hidden-xs"> <div class="infopage_ad hidden-xs">
<a href="<?php echo $recommands['Content Article D']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article D']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article D']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article D']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article D']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article D']->ic_title; ?>"></a>
@ -77,7 +76,7 @@
<div class="infopage_ad hidden-xs"> <div class="infopage_ad hidden-xs">
<a href="<?php echo $recommands['Content Article E']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article E']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article E']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article E']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article E']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article E']->ic_title; ?>"></a>
@ -95,7 +94,7 @@
<div class="infopage_ad hidden-xs"> <div class="infopage_ad hidden-xs">
<a href="<?php echo $recommands['Content Article F']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Article F']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Article F']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Article F']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Article F']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Article F']->ic_title; ?>"></a>

@ -1,12 +1,11 @@
<div class="infopage_ad_content"> <div class="infopage_ad_content">
<?php if (!empty($recommands['Content Tour A']) || !empty($recommands['Content Tour B']) || !empty($recommands['Content Tour C']) || !empty($recommands['Content Tour D'])) { ?> <?php if (!empty($recommands['Content Tour A']) || !empty($recommands['Content Tour B']) || !empty($recommands['Content Tour C']) || !empty($recommands['Content Tour D'])) { ?>
<div class="content_article_title">You might be interested in:</div> <div class="content_article_title">Explore similar itineraries:</div>
<?php if (!empty($recommands['Content Tour A'])) { ?> <?php if (!empty($recommands['Content Tour A'])) { ?>
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour A']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Tour A']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour A']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Tour A']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Tour A']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Tour A']->ic_title; ?>"></a>
@ -23,7 +22,7 @@
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour B']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Tour B']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour B']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Tour B']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Tour B']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Tour B']->ic_title; ?>"></a>
@ -41,7 +40,7 @@
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour C']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Tour C']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour C']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Tour C']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Tour C']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Tour C']->ic_title; ?>"></a>
@ -58,7 +57,7 @@
<div class="infopage_ad"> <div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour D']->ic_url; ?>"> <img <a href="<?php echo $recommands['Content Tour D']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy" src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour D']->mobile_photo; ?>" originalsrc="<?php echo $recommands['Content Tour D']->desktop_photo; ?>"
class="img-responsive" class="img-responsive"
alt="<?php echo $recommands['Content Tour D']->ic_title; ?>"></a> alt="<?php echo $recommands['Content Tour D']->ic_title; ?>"></a>
@ -71,41 +70,5 @@
</div> </div>
<?php } ?> <?php } ?>
<?php if (!empty($recommands['Content Tour E'])) { ?>
<div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour E']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour E']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Content Tour E']->ic_title; ?>"></a>
<div class="content_article_name"><a
href="<?php echo $recommands['Content Tour E']->ic_url; ?>"> <?php echo $recommands['Content Tour E']->ic_title; ?> </a>
</div>
<div class="content_article_button"><a
href="<?php echo $recommands['Content Tour E']->ic_url; ?>"></a>
</div>
</div>
<?php } ?>
<?php if (!empty($recommands['Content Tour F'])) { ?>
<div class="infopage_ad">
<a href="<?php echo $recommands['Content Tour F']->ic_url; ?>"> <img
src="https://data.asiahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Content Tour F']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Content Tour F']->ic_title; ?>"></a>
<div class="content_article_name"><a
href="<?php echo $recommands['Content Tour F']->ic_url; ?>"> <?php echo $recommands['Content Tour F']->ic_title; ?> </a>
</div>
<div class="content_article_button"><a
href="<?php echo $recommands['Content Tour F']->ic_url; ?>"></a>
</div>
</div>
<?php } ?>
<?php } ?> <?php } ?>
</div> </div>

@ -14,7 +14,7 @@
"dateModified": "<?php echo date('Y-m-d\TH:i:s'); ?>", "dateModified": "<?php echo date('Y-m-d\TH:i:s'); ?>",
"author": { "author": {
"@type": "Person", "@type": "Person",
"name": "<?php echo $author->OPI_FirstName; ?>" "name": "<?php echo $author; ?>"
}, },
"publisher": { "publisher": {
"@type": "Organization", "@type": "Organization",

@ -1,22 +1,22 @@
<div class="right_tour"> <div class="right_tour">
<div class="info_ad_title" style="display: flex;">Popular tours</div>
<div class="right_ad_list"> <div class="right_ad_list popular_tours"><div class="info_ad_title" style="display: flex;">Popular tours</div>
<ul> <ul>
<?php foreach ($tips_right_a as $index => $info) {?> <?php foreach ($tips_right_a as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_tours"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_tours"><?php echo $info->ic_title ?></a></li>
<?php }?> <?php }?>
</ul> </ul>
</div> </div>
<div class="info_ad_title" style="display: flex;">Make the most of your time</div>
<div class="right_ad_list"> <div class="right_ad_list make_most_time"><div class="info_ad_title" style="display: flex;">Make the most of your time</div>
<ul> <ul>
<?php foreach ($tips_right_b as $index => $info) {?> <?php foreach ($tips_right_b as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_plan"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_plan"><?php echo $info->ic_title ?></a></li>
<?php }?> <?php }?>
</ul> </ul>
</div> </div>
<div class="info_ad_title" style="display: flex;">Choose the best time to visit</div>
<div class="right_ad_list"> <div class="right_ad_list best_time_visit"><div class="info_ad_title" style="display: flex;">Choose the best time to visit</div>
<ul> <ul>
<?php foreach ($tips_right_c as $index => $info) {?> <?php foreach ($tips_right_c as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_weather"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_weather"><?php echo $info->ic_title ?></a></li>

@ -11,177 +11,212 @@
placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..." placeholder="E.g.: This is a big trip for anniversary, honeymoon, birthday celebration..."
style="height:80px;"></textarea> style="height:80px;"></textarea>
<div class="selectionBlock" style="margin-bottom: 0;"> <div class="selectionBlock">
<h4 style="margin-top: 0; margin-bottom: 0px;"> <h4 style="margin-bottom: 0;margin-top: 0; padding-bottom: 0;">
Number in your group How would you travel?
</h4> </h4>
<div id="group_error_msg" style="display: none"> <div id="group_error_msg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div> <div class="requiredArea" style="margin-top:-10px;">Please select number in your group.</div>
</div> </div>
<div class="travel_group"> <div class="travel_group">
<input type="radio" value="Family" id="Family" name="travel_group"> <input type="radio" value="Family" id="Family" name="travel_group">
<label for="Family" class="family"> <label for="Family" class="family">
Family Family
</label> </label>
</div> </div>
<div class="travel_group"> <div class="travel_group">
<input type="radio" value="Couple" id="Couple" name="travel_group"> <input type="radio" value="Couple" id="Couple" name="travel_group">
<label for="Couple" class="couple"> <label for="Couple" class="couple">
Couple Couple
</label> </label>
</div> </div>
<div class="travel_group"> <div class="travel_group">
<input type="radio" value="Solo" id="Solo" name="travel_group"> <input type="radio" value="Solo" id="Solo" name="travel_group">
<label for="Solo" class="solo"> <label for="Solo" class="solo">
Solo Solo
</label> </label>
</div> </div>
<div class="travel_group"> <div class="travel_group">
<input type="radio" value="group" id="Other" name="travel_group"> <input type="radio" value="group" id="Other" name="travel_group">
<label for="Other" class="group"> <label for="Other" class="group">
Other group Other group
</label> </label>
</div> </div>
<div id="adultBlock" style="display: none">
<p style="
margin-bottom: 0;
font-size: 22px;
margin-top: 20px;
">When you plan to take the trip:</p>
<div class="peopleSelect">
<p style="margin-top: 20px;"><strong>
Adults (≥18 years old)
</strong> </p>
<button class="minaddBtn reduceadult" id="minusAdult" type="button" value="-">-</button>
<input class="number" type="text" value="2" id="adultNumber" name="adult">
<button class="minaddBtn addadult" type="button" id="plusAdult" value="+">+</button>
</div>
<div class="age_range">
<p>
Adults' ages
</p>
<div class="checkYes" style="float:left;">
<label for="65+">
<input type="checkbox" value="yes" name="age_65_plus" id="65+"
class="checkBorder">65+
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="51-64">
<input type="checkbox" value="yes" name="age_51_64" id="51-64"
class="checkBorder">51-64
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="41-50">
<input type="checkbox" value="yes" name="age_41_50" id="41-50"
class="checkBorder">41-50
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="31-40">
<input type="checkbox" value="yes" name="age_31_40" id="31-40"
class="checkBorder">31-40
</label>
</div>
<div class="checkYes" style="float:left;">
<label for="18-30">
<input type="checkbox" value="yes" name="age_18_30" id="18-30"
class="checkBorder">18-30
</label>
</div>
</div>
</div>
<div class="clear"></div>
<div id="childrenBlock" style="display: none">
<p style="margin-top: 0; margin-top: 0;
margin-bottom: 5px;
font-size: 20px;"><strong>Children</strong></p>
<div class="kids_age">
<p style="margin-bottom: 5px;">10-17 yrs old</p>
<select class="kids_number" id="teenagerNumber" name="teenager_10_17_yrs">
<option value="0">0
</option>
<option value="1">1
</option>
<option value="2">2
</option>
<option value="3">3
</option>
<option value="4">4
</option>
</select>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">3-9 yrs old</p>
<select class="kids_number" id="childrenNumber" name="children_3_9_yrs">
<option value="0">0
</option>
<option value="1">1
</option>
<option value="2">2
</option>
<option value="3">3
</option>
<option value="4">4
</option>
</select>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">0-2 yrs old</p>
<select class="kids_number" id="infantNumber" name="infant_0_2_yrs">
<option value="0">0
</option>
<option value="1">1
</option>
<option value="2">2
</option>
<option value="3">3
</option>
<option value="4">4
</option>
</select>
</div>
</div>
</div> <div id="adultBlock" style="display: none">
<div class="selectionBlock"> <p style="margin-top: 0;margin-bottom: 0;"><strong>Adults number (age ≥ 18 years old)</strong></p>
<h4> <div class="kids_age">
When would you travel? <select class="kids_number" id="adult_18_plus" name="adult_18_plus" >
</h4> <option value="0">0</option>
<div id="date_error_msg" style="display: none"> <option value="1">1</option>
<div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div> <option value="2">2</option>
</div> <option value="3">3</option>
<div class="travel_group date_select"> <option value="4">4</option>
<input type="radio" value="exact travel dates" id="exact" name="trip_date"> <option value="5">5</option>
<label for="exact" class="family"> <option value="6">6</option>
Exact travel dates <option value="7">7</option>
</label> <option value="8">8</option>
</div> <option value="9">9</option>
<div class="travel_group date_select"> <option value="10">10</option>
<input type="radio" value="approximate travel dates" id="approximate" name="trip_date"> <option value="11">11</option>
<label for="approximate" class="couple"> <option value="12">12</option>
Approximate travel dates <option value="13">13</option>
</label> <option value="14">14</option>
</div> <option value="15">15</option>
<div class="travel_group date_select"> <option value="16">16</option>
<input type="radio" value="haven't decided travel dates" id="yet" name="trip_date"> <option value="17">17</option>
<label for="yet" class="solo"> <option value="18">18</option>
Undecided travel dates <option value="19">19</option>
</label> <option value="20">20</option>
</div> <option value="21">21</option>
<div class="trip_date_length" id="tripDateBlock" style="display: none"> <option value="22">22</option>
<p style="clear: both;margin-bottom: 10px;" id="trip_date_tip">Select your travel date.</p> <option value="23">23</option>
<div id="dateSelectionBlock"> <option value="24">24</option>
<div id='flatpickrBlock'> <option value="25">25</option>
<input class="InquiryCalendar datepicker" id="starting_date" name="date_start" placeholder="Starting date *" readonly="readonly" type="text" value="" /> <option value="26">26</option>
</div> <option value="27">27</option>
<input type="month" id="expectedMonth" name="expected_month" placeholder="Select your expected travel date."> <option value="28">28</option>
</div> <option value="29">29</option>
</div> <option value="30">30</option>
</div> </select>
<p style="
margin-top: 5px;font-size: 18px;
">people</p>
</div>
</div>
<div class="clear"></div>
<div id="childrenBlock" style="display: none">
<p style="margin-top: 0;margin-bottom: 0;"><strong>Children number</strong></p>
<div class="kids_age">
<p style="margin-bottom: 5px;">10-17 yrs old</p>
<select class="kids_number" id="teenagerNumber" name="teenager_10_17">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">3-9 yrs old</p>
<select class="kids_number" id="childrenNumber" name="children_3_9">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
<div class="kids_age">
<p style="margin-bottom: 5px;">0-2 yrs old</p>
<select class="kids_number" id="infantNumber" name="infant_0_2">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<p style="
margin-top: 10px;font-size: 18px;
">people</p>
</div>
</div>
</div>
<div class="selectionBlock" style="margin-bottom: 10px;">
<h4 style="margin-bottom: 0;
margin-top: 0;
padding-bottom: 0;">
When would you travel?
</h4>
<div id="date_error_msg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Select your travel data.</div>
</div>
<div class="travel_group date_select" >
<input type="radio" value="exact dates" id="exact" name="trip_date">
<label for="exact" class="updatedestination" style="font-size: 18px;">
Exact dates
</label>
</div>
<div class="travel_group date_select" >
<input type="radio" value="approximate dates" id="approximate" name="trip_date">
<label for="approximate" class="updatedestination" style="font-size: 18px;">
Approximate dates
</label>
</div>
<div class="travel_group date_select" >
<input type="radio" value="Undecided dates" id="yet" name="trip_date">
<label for="yet" class="updatedestination" style="font-size: 18px;">
Undecided dates
</label>
</div>
<div class="trip_date_length" id="tripDateBlock" style="display: none">
<div id='dateSelectionBlock'>
<div id='date_start_block'>
<input type="text" class="arrivalDate datepicker" id="starting_date" name="date_start" value="" placeholder="Select your exact travel date." autocomplete="off" style="width: auto; float: left; margin-right: 15px; height: 30px;
margin-top: 5px;">
</div>
<select class="country_code" id="expectedMonth" name="expected_month" style="margin-top: 15px;">
<option value="" disabled selected>Select your approximate travel date.</option>
<option value="Mar. 2024">Mar. 2024</option>
<option value="Apr. 2024">Apr. 2024</option>
<option value="May. 2024">May. 2024</option>
<option value="Jun. 2024">Jun. 2024</option>
<option value="Jul. 2024">Jul. 2024</option>
<option value="Aug. 2024">Aug. 2024</option>
<option value="Sep. 2024">Sep. 2024</option>
<option value="Oct. 2024">Oct. 2024</option>
<option value="Nov. 2024">Nov. 2024</option>
<option value="Dec. 2024">Dec. 2024</option>
<option value="Jan. 2025">Jan. 2025</option>
<option value="Feb. 2025">Feb. 2025</option>
<option value="Mar. 2025">Mar. 2025</option>
<option value="Apr. 2025">Apr. 2025</option>
<option value="May. 2025">May. 2025</option>
<option value="Jun. 2025">Jun. 2025</option>
<option value="Jul. 2025">Jul. 2025</option>
<option value="Aug. 2025">Aug. 2025</option>
<option value="Sep. 2025">Sep. 2025</option>
<option value="Oct. 2025">Oct. 2025</option>
<option value="Nov. 2025">Nov. 2025</option>
<option value="Dec. 2025">Dec. 2025</option>
<option value="Jan. 2026">Jan. 2026</option>
<option value="Feb. 2026">Feb. 2026</option>
<option value="Mar. 2026">Mar. 2026</option>
<option value="Apr. 2026">Apr. 2026</option>
<option value="May. 2026">May. 2026</option>
<option value="Jun. 2026">Jun. 2026</option>
<option value="Jul. 2026">Jul. 2026</option>
<option value="Aug. 2026">Aug. 2026</option>
<option value="Sep. 2026">Sep. 2026</option>
<option value="Oct. 2026">Oct. 2026</option>
<option value="Nov. 2026">Nov. 2026</option>
<option value="Dec. 2026">Dec. 2026</option>
<option value="Jan. 2027">Jan. 2027</option>
<option value="Feb. 2027">Feb. 2027</option>
<option value="Mar. 2027">Mar. 2027</option>
<option value="Apr. 2027">Apr. 2027</option>
</select>
</div>
</div>
</div>
<input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text" <input class="FullName" id="realname" name="name" placeholder="Your name *" required="" type="text"
value="" /> value="" />
<div id="realname_errmsg" style="display: none"> <div id="realname_errmsg" style="display: none">
@ -196,12 +231,7 @@
<div id="email_verify_errmsg" style="display: none"> <div id="email_verify_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please verify your email</div> <div class="requiredArea" style="margin-top:-10px;">Please verify your email</div>
</div> </div>
<!-- <input class="InquiryCalendar" id="starting_date" name="date_start" placeholder="Starting date *"
readonly="readonly" />
<div id="starting_date_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your starting date</div>
</div>-->
<select name="country_code" class="country_code"> <select name="country_code" class="country_code">
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option> <option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option> <option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
@ -465,7 +495,7 @@
margin-top: 0; margin-top: 0;
margin-bottom: 10px; margin-bottom: 10px;
padding: 0; padding: 0;
">I prefer to be contacted via:</p> ">I am also available on:</p>
<div class="checkYes"> <div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" style="width:auto !important"> <input type="checkbox" value="yes" name="contact_via_whatsapp" id="whatsapp" class="checkBorder" style="width:auto !important">
<label for="whatsapp">WhatsApp</label> <label for="whatsapp">WhatsApp</label>
@ -474,39 +504,20 @@
<input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" style="width:auto !important"> <input type="checkbox" value="yes" name="contact_via_iMessage" id="iMessage" class="checkBorder" style="width:auto !important">
<label for="iMessage">iMessage</label> <label for="iMessage">iMessage</label>
</div> </div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_phone_call" id="Phone" class="checkBorder" style="width:auto !important">
<label for="Phone">Phone call</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_email" id="Email" class="checkBorder" style="width:auto !important">
<label for="Email">Email</label>
</div>
<div class="checkYes">
<input type="checkbox" value="yes" name="contact_via_video_appointment" id="Video" class="checkBorder" style="width:auto !important">
<label for="Video">Video appointment</label>
</div>
<button class="sendButton" id="tour_list_button" name="tour_list_button" type="button">Inquire <button class="sendButton" id="tour_list_button" name="tour_list_button" type="button">Inquire
Now</button> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>" /> Now</button> <input name="product_code" type="hidden" value="<?php echo $meta_product_code; ?>" />
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" /> <input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
</form> </form>
<!--
<h3 style="text-align: center; font-size: 20px; line-height: 22px;">For a quick conversation, simply reach us via WhatsApp:</h3>
<div class="contactwechat"><img alt="asia highlights' wechat code" height="100px" src="https://data.asiahighlights.com/image/about/asia-highlights-whatsapp-code.jpg" width="100px" />
<div class="wechatinfo"><span class="wechatred">+8615807734776</span><br />
Email: <span class="wechatred">contact@asiahighlights.com</span></div>
</div>
-->
</div> </div>
</div> </div>
</div> </div>
<script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script> <script src="https://data.asiahighlights.com/min/?f=/js/jquery-1.8.2.min.js,/js/flatpickr-4.6.1.min.js"></script>
<script> <script>
var selectedExpectedDate = ''; var selectedExpectedDate = '';
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
flatpickr("#starting_date", { flatpickr("#starting_date", {
@ -517,29 +528,29 @@ document.addEventListener('DOMContentLoaded', () => {
minDate: "today" minDate: "today"
}); });
var tour_list_button = document.getElementById("tour_list_button"); var quick_inquiry_button = document.getElementById("tour_list_button");
var tour_list_form = document.getElementById("tour_list_form"); var quick_inquiry_form = document.getElementById("tour_list_form");
tour_list_button.addEventListener('click', function (event) { quick_inquiry_button.addEventListener('click', function(event) {
var validateResult = validateQuickInquiryForm(); var validateResult = validateQuickInquiryForm();
if (validateResult) { if (validateResult) {
if (typeof (grecaptcha) === "undefined") { if (typeof(grecaptcha) === "undefined") {
console.warn('grecaptcha is disabled.'); console.warn('grecaptcha is disabled.');
tour_list_form.submit(); quick_inquiry_form.submit();
} else { } else {
grecaptcha.enterprise.ready(async () => { grecaptcha.enterprise.ready(async () => {
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', { action: 'ADD_TO_CART' }); const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', {action: 'ADD_TO_CART'});
var el = document.createElement("input"); var el = document.createElement("input");
el.type = "hidden"; el.type = "hidden";
el.name = "__grecaptcha_token__"; el.name = "__grecaptcha_token__";
el.value = token; el.value = token;
tour_list_form.appendChild(el); quick_inquiry_form.appendChild(el);
tour_list_form.submit(); quick_inquiry_form.submit();
tour_list_button.innerText = "Submitted successfully"; quick_inquiry_button.innerText = "Submitted successfully";
}); });
} }
} }
}); });
}); });
function validateQuickInquiryForm() { function validateQuickInquiryForm() {
@ -585,11 +596,11 @@ function validateQuickInquiryForm() {
tripDate_is_checked = true; tripDate_is_checked = true;
} }
//时间选择 //时间选择
if (!tripDate_is_checked) { if (!tripDate_is_checked) {
startingDateErrEl.style.display = ''; startingDateErrEl.style.display = '';
result = false; result = false;
} }
if (realnameVal === '') { if (realnameVal === '') {
realnameErrEl.style.display = ''; realnameErrEl.style.display = '';
@ -613,7 +624,7 @@ function validateQuickInquiryForm() {
} }
</script> </script>
<script> <script>
$(function () { $(function () {
var $adultBlock = $('#adultBlock'); var $adultBlock = $('#adultBlock');
var $childrenBlock = $('#childrenBlock'); var $childrenBlock = $('#childrenBlock');
@ -627,10 +638,6 @@ function validateQuickInquiryForm() {
var infantNumber = $infantNumberInput.val(); var infantNumber = $infantNumberInput.val();
$('input[name="travel_group"]').each((i, groupEle) => { $('input[name="travel_group"]').each((i, groupEle) => {
$(groupEle).click(function (e) { $(groupEle).click(function (e) {
$teenagerNumberInput.val(0);
$childrenNumberInput.val(0);
$infantNumberInput.val(0);
var currentTarget = e.currentTarget; var currentTarget = e.currentTarget;
if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) { if (currentTarget.id === 'Family' || currentTarget.id === 'Other' ) {
@ -641,19 +648,19 @@ function validateQuickInquiryForm() {
$childrenBlock.hide(); $childrenBlock.hide();
} }
if (currentTarget.id === 'Couple') { if (currentTarget.id === 'Couple') {
$adultNumberInput.val(2); $('#adult_18_plus').val('2');
} else if (currentTarget.id === 'Solo') { } else if (currentTarget.id === 'Solo') {
$adultNumberInput.val(1); $('#adult_18_plus').val('1');
} }
}) })
}); });
var $tripDateBlock = $('#tripDateBlock'); var $tripDateBlock = $('#tripDateBlock');
var $expectedDate = $('#flatpickrBlock'); var $expectedDate = $('#date_start_block');
var $expectedMonth = $('#expectedMonth'); var $expectedMonth = $('#expectedMonth');
var $dateSelectionBlock = $('#dateSelectionBlock'); var $dateSelectionBlock = $('#dateSelectionBlock');
var $tripDateTip = $('#trip_date_tip'); var $tripDateTip = $('#trip_date_tip');
$('input[name="trip_date"]').each((i, tripDateEle) => { $('input[name="trip_date"]').each((i, tripDateEle) => {
$(tripDateEle).click(function (e) { $(tripDateEle).click(function (e) {
$expectedDate.val(''); $expectedDate.val('');
@ -688,7 +695,7 @@ function validateQuickInquiryForm() {
adultNumber--; adultNumber--;
$adultNumberInput.val(adultNumber); $adultNumberInput.val(adultNumber);
} }
}); });
// 青少年 // 青少年
$('#plusTeenager').click(function () { $('#plusTeenager').click(function () {
teenagerNumber++; teenagerNumber++;
@ -724,11 +731,11 @@ function validateQuickInquiryForm() {
}); });
}) })
</script> </script>
<style> <style>
.date_select {width: 28% !important;} .date_select {width: 31% !important;}
@media (max-width: 750px){ @media (max-width: 750px){
.date_select { .date_select {width: 47% !important;}
width: 93% !important; .date_select label {font-size:17px !important;}
}
} }
</style> </style>

@ -6,9 +6,9 @@
<title> <title>
<!--@TITLE@--> <!--@TITLE@-->
</title> </title>
<meta name="keywords" content="<!--@KEYWORDS@-->">
<meta name="description" content="<!--@DESCRIPTION@-->"> <meta name="description" content="<!--@DESCRIPTION@-->">
<link rel="canonical" href="<!--@CANONICAL@-->"> <link rel="canonical" href="<!--@CANONICAL@-->">
<!--@Meta_Robots@-->
<meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport"> <meta content="width=device-width,minimum-scale=1,initial-scale=1" name="viewport">
<!--@OG:IMAGE@--> <!--@OG:IMAGE@-->
<link rel="shortcut icon" href="https://data.asiahighlights.com/favicon.ico" /> <link rel="shortcut icon" href="https://data.asiahighlights.com/favicon.ico" />
@ -17,7 +17,6 @@
<link rel="dns-prefetch" href="https://www.googletagmanager.com"> <link rel="dns-prefetch" href="https://www.googletagmanager.com">
<!--@MAIN-CSS@--> <!--@MAIN-CSS@-->
<!--@ADDON-CSS@--> <!--@ADDON-CSS@-->
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) { <script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l] = w[l] || [];
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
@ -26,16 +25,6 @@
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f); f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-56CMWN3');</script> })(window, document, 'script', 'dataLayer', 'GTM-56CMWN3');</script>
<!-- End Google Tag Manager -->
<!-- Global site tag (gtag.js) - Google Ads: 996341496 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-996341496"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'AW-996341496');
</script>
</head> </head>
<body> <body>
@ -45,15 +34,14 @@
<header class="headerbar" id="header"> <header class="headerbar" id="header">
<img src="https://data.chinahighlights.com/image/tour-detail/icon/top-navigation-menu-button.jpg" <img src="https://data.chinahighlights.com/image/tour-detail/icon/top-navigation-menu-button.jpg"
class="topnaviarrowdown action--open" width="26" height="25" style="position: absolute; top: 13px; left: 10px;"> class="topnaviarrowdown action--open" width="26" height="25" style="position: absolute; top: 13px; left: 10px;" title="navigation button">
<a href="/" style="width: 103px; display: block; margin: 0 auto;"> <img src="https://data.asiahighlights.com/pic/logo-ah.png" alt="Asia Highlights logo" class="chinahighlightslogo img-responsive" width="238" height="117"></a> <a href="/" style="width: 103px; display: block; margin: 0 auto;"> <img src="https://data.asiahighlights.com/pic/logo-ah.png" alt="Asia Highlights logo" class="chinahighlightslogo img-responsive" width="238" height="117"></a>
<div class="topnavitailor"> <div class="topnavitailor">
<a href="/contact-us" class="infocustomize">Contact</a> <a href="/contact-us" class="infocustomize">Contact</a>
</div> </div>
</header> </header>
<div class="updated_news">How to Plan an Incredible Family Trip to Japan in 2024/2025. <a
href="/japan/how-to-plan-a-family-trip-to-japan">Learn more.</a></div>
<nav id="ml-menu" class="menu"> <nav id="ml-menu" class="menu">
<div class="siteSearch"> <div class="siteSearch">
<form id="searchbox_001281624266240652297:cl1fy1cxepi" name="googlesreach" <form id="searchbox_001281624266240652297:cl1fy1cxepi" name="googlesreach"
@ -62,7 +50,7 @@
<input type="hidden" value="FORID:9" name="cof"> <input type="hidden" value="FORID:9" name="cof">
<input type="text" onfocus="this.value = ''" class="strkeys" placeholder="site search" name="q"> <input type="text" onfocus="this.value = ''" class="strkeys" placeholder="site search" name="q">
<input type="image" class="submits" <input type="image" class="submits"
src="https://data.chinahighlights.com/pic/pc-top-navigation-web-search-bg.png"> src="https://data.chinahighlights.com/pic/pc-top-navigation-web-search-bg.png" alt="site search button" title="site search button">
<input type="hidden" name="__ftoken__" value="MTU5ODMzNDc2NDQ0NA==.3664784f0395175e7de44382781cd7f7cb647e2a"> <input type="hidden" name="__ftoken__" value="MTU5ODMzNDc2NDQ0NA==.3664784f0395175e7de44382781cd7f7cb647e2a">
</form> </form>
</div> </div>
@ -77,231 +65,34 @@
<div class="menu__wrap"> <div class="menu__wrap">
<ul data-menu="main" class="menu__level menu__level--current" tabindex="-1" role="menu" aria-label="All"> <ul data-menu="main" class="menu__level menu__level--current" tabindex="-1" role="menu" aria-label="All">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/">Home</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/">Home</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours" data-submenu="submenu-7" <li class="menu__item" role="menuitem" ><a class="menu__link" data-submenu="submenu-2" aria-owns="submenu-2" >Destinations</a></li>
aria-owns="submenu-7">Japan</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/tours" data-submenu="submenu-7" aria-owns="submenu-7">Tours</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" id="thailand_vietnam_cambodia_mobile"
data-submenu="submenu-6" aria-owns="submenu-6">Thailand-Vietnam-Cambodia</a></li> <li class="menu__item" role="menuitem" style="margin-bottom: 50px;"><a class="menu__link" href="/itinerary-ideas">Itinerary Ideas</a></li>
<li class="menu__item" role="menuitem"><a href="/reviews" data-submenu="submenu-9" aria-owns="submenu-9" class="menu__link">Reviews</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-1"
aria-owns="submenu-1">Southeast Asia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-10"
aria-owns="submenu-10">East Asia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-11"
aria-owns="submenu-11">India & Himalaya</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-12"
aria-owns="submenu-12">Middle East</a></li>
<li class="menu__item" role="menuitem" style="margin-bottom: 50px;"><a class="menu__link"
data-submenu="submenu-13" aria-owns="submenu-13">Central Asia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-4"
aria-owns="submenu-4">1-Week Itinerary</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-2"
aria-owns="submenu-2">10-12 Days Itinerary</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-5"
aria-owns="submenu-5">2-Week Itinerary</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-3"
aria-owns="submenu-3">3-Week Itinerary</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" data-submenu="submenu-8"
aria-owns="submenu-8">4-Week Itinerary</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/about-us">About Us</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/about-us">About Us</a></li>
<li class="menu__item" role="menuitem"><a href="/reviews" data-submenu="submenu-9" aria-owns="submenu-9"
class="menu__link">Reviews</a></li>
</ul>
<!-- 4-weeks-itinerary -->
<ul data-menu="submenu-8" id="submenu-8" class="menu__level" tabindex="-1" role="menu"
aria-label="4-weeks-itinerary">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/southeast-asia/4-weeks-itinerary">Southeast
Asia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.chinahighlights.com/travelguide/4-week-china-itinerary.htm" target="_blank">China</a></li>
</ul>
<!-- Thailand-Vietnam-Cambodia -->
<ul data-menu="submenu-6" id="submenu-6" class="menu__level" tabindex="-1" role="menu"
aria-label="Thailand_Vietnam_Cambodia">
<li class="menu__item" role="menuitem"><a
href="/southeast-asia/tours/highlights-of-thailand-cambodia-and-vietnam" class="menu__link">3 Weeks in
Thailand, Cambodia, and Vietnam</a></li>
<li class="menu__item" role="menuitem"><a href="/southeast-asia/tours/best-of-thailand-cambodia-and-vietnam"
class="menu__link">2 Weeks in Thailand, Cambodia, and Vietnam</a></li>
<li class="menu__item" role="menuitem" style="margin-bottom: 30px;"><a
href="/southeast-asia/tours/essential-thailand-cambodia-and-vietnam" class="menu__link">12 Days in Thailand,
Cambodia, and Vietnam)</a></li>
<li class="menu__item" role="menuitem"><a href="/southeast-asia/tours/vietnam-cambodia-family-tour"
class="menu__link">2 Weeks in Vietnam and Cambodia for Family</a></li>
<li class="menu__item" role="menuitem"><a href="/southeast-asia/tours/vietnam-cambodia-mekong-cruise"
class="menu__link">2 Weeks in Vietnam and Cambodia With Mekong Cruise</a></li>
<li class="menu__item" role="menuitem"><a href="/southeast-asia/tours/cambodia-and-vietnam-highlights"
class="menu__link">12 Days in Vietnam and Cambodia</a></li>
<li class="menu__item" role="menuitem" style="margin-bottom: 30px;"><a
href="/southeast-asia/tours/from-south-vietnam-to-north-cambodia" class="menu__link">8 Days in Vietnam and
Cambodia</a></li>
<li class="menu__item" role="menuitem" style="margin-bottom: 30px;"><a
href="/southeast-asia/tours/classic-vietnam-and-thailand" class="menu__link">2 Weeks in Vietnam and
Thailand</a></li>
<li class="menu__item" role="menuitem" style="margin-bottom: 30px;"><a
href="/southeast-asia/tours/best-of-thailand-and-cambodia" class="menu__link">11 Days in Thailand and
Cambodia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/southeast-asia/tours/thailand-cambodia-and-vietnam">All Thailand-Vietnam-Cambodia Tours</a></li>
</ul> </ul>
<ul data-menu="submenu-2" id="submenu-2" class="menu__level" tabindex="-1" role="menu"
<!-- destinations --> aria-label="destinations">
<ul data-menu="submenu-1" id="submenu-1" class="menu__level" tabindex="-1" role="menu" aria-label="destinations">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/thailand">Thailand</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/thailand">Thailand</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/thailand/tours/lantern-festival">Thailand
Lantern Festival</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/vietnam">Vietnam</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/vietnam">Vietnam</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/cambodia">Cambodia</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/cambodia">Cambodia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/laos">Laos</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/laos">Laos</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/bali">Indonesia(Bali)</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/bali">Indonesia (Bali)</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/singapore">Singapore</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/singapore">Singapore</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/myanmar">Myanmar</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/myanmar">Myanmar</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/southeast-asia/tours">All Southeast Asia
Destinations</a></li>
</ul>
<ul data-menu="submenu-10" id="submenu-10" class="menu__level" tabindex="-1" role="menu"
aria-label="destinations">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan">Japan</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/japan">Japan</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" <li class="menu__item" role="menuitem"><a class="menu__link" href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">South Korea</a></li>
href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">South Korea</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="https://www.chinahighlights.com/tour/" target="_blank" rel="nofollow">China (HK, Taiwan)</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="https://www.chinahighlights.com/tour/" <li class="menu__item" role="menuitem"><a class="menu__link" href="/asia/tours/mongolia-china-and-thailand">Mongolia</a></li>
target="_blank">China (HK, Taiwan)</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/india">India</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" <li class="menu__item" role="menuitem"><a class="menu__link" href="/nepal">Nepal</a></li>
href="/asia/tours/mongolia-china-and-thailand">Mongolia</a></li> <li class="menu__item" role="menuitem"><a class="menu__link" href="/bhutan">Bhutan</a></li>
</ul> <li class="menu__item" role="menuitem"><a class="menu__link" href="/srilanka">Sri Lanka</a></li>
<ul data-menu="submenu-11" id="submenu-11" class="menu__level" tabindex="-1" role="menu"
aria-label="destinations">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/india">India</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/nepal">Nepal</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/bhutan">Bhutan</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/srilanka">Sri Lanka</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/india/tours">All India & Himalaya
Destinations</a></li>
</ul>
<ul data-menu="submenu-12" id="submenu-12" class="menu__level" tabindex="-1" role="menu"
aria-label="destinations">
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.globalhighlights.com/middle-east/tours" target="_blank">Middle East Destinations</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="https://www.globalhighlights.com/egypt/tours"
target="_blank">Egypt</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.globalhighlights.com/israel/plan-a-trip" target="_blank">Israel</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.globalhighlights.com/middle-east/tours/12-day-egypt-jordan" target="_blank">Jordan</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.globalhighlights.com/turkey/tours" target="_blank">Turkey</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.globalhighlights.com/morocco/tours" target="_blank">Morocco</a></li>
</ul>
<ul data-menu="submenu-13" id="submenu-13" class="menu__level" tabindex="-1" role="menu"
aria-label="destinations">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/tours/kyrgyzstan-tajikistan-uzbekistan">Five <li class="menu__item" role="menuitem"><a class="menu__link" href="/tours/kyrgyzstan-tajikistan-uzbekistan">Five
Stans</a></li> Stans</a></li>
</ul> </ul>
<!-- Best-time -->
<ul data-menu="submenu-2" id="submenu-2" class="menu__level" tabindex="-1" role="menu" aria-label="Best-time">
<li class="menu__item" role="menuitem"><a
href="https://www.chinahighlights.com/travelguide/8-day-china-itinerary.htm" class="menu__link"
target="_blank">8 Days in China</a></li>
<li class="menu__item" role="menuitem"><a href="/japan/10-day-itineraries" class="menu__link">10 Days in
Japan</a></li>
<li class="menu__item" role="menuitem"><a href="/vietnam/10-days-itinerary" class="menu__link">10 Days in
Vietnam</a></li>
<li class="menu__item" role="menuitem"><a
href="https://www.chinahighlights.com/travelguide/10-days-china-itinerary.htm" target="_blank"
class="menu__link">10 Days in China</a></li>
<li class="menu__item" role="menuitem"><a href="/japan/12-day-itineraries" class="menu__link">12 Days in
Japan</a></li>
<li class="menu__item" role="menuitem"><a
href="https://www.chinahighlights.com/travelguide/12-days-china-itinerary.htm" class="menu__link"
target="_blank">12 Days in China</a></li>
</ul>
<!-- festival -->
<ul data-menu="submenu-3" id="submenu-3" class="menu__level" tabindex="-1" role="menu" aria-label="festival">
<li class="menu__item" role="menuitem"><a href="/southeast-asia/3-weeks-itinerary" class="menu__link">Southeast
Asia</a></li>
<li class="menu__item" role="menuitem"><a href="/japan/3-week-itineraries" class="menu__link">Japan</a></li>
<li class="menu__item" role="menuitem"><a href="/vietnam/3-weeks-itinerary" class="menu__link">Vietnam</a></li>
<li class="menu__item" role="menuitem"><a
href="https://www.chinahighlights.com/travelguide/3-weeks-china-itinerary.htm" target="_blank"
class="menu__link">China</a></li>
<li class="menu__item" role="menuitem"><a href="/southeast-asia/trip-to-thailand-cambodia-vietnam"
class="menu__link">Thailand, Cambodia, Vietnam</a></li>
<li class="menu__item" role="menuitem"><a href="/asia/tours/china-and-vietnam" class="menu__link">China,
Vietnam</a></li>
<li class="menu__item" role="menuitem"><a href="/asia/tours/china-nepal-and-india" class="menu__link">China,
Nepal, India</a></li>
<li class="menu__item" role="menuitem"><a href="/asia/tours/china-laos-thailand" class="menu__link">China, Laos,
Thailand</a></li>
</ul>
<!-- top things to do -->
<ul data-menu="submenu-4" id="submenu-4" class="menu__level" tabindex="-1" role="menu" aria-label="topthingstodo">
<li class="menu__item" role="menuitem"><a href="/japan/1-week-itinerary" class="menu__link">Japan</a></li>
<li class="menu__item" role="menuitem"><a href="/vietnam/7-days-itinerary" class="menu__link">Vietnam</a></li>
</ul>
<ul data-menu="submenu-5" id="submenu-5" class="menu__level" tabindex="-1" role="menu" aria-label="vacation">
<li class="menu__item" role="menuitem"><a href="/southeast-asia/2-weeks-itinerary" class="menu__link">Southeast
Asia</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/2-week-itineraries">Japan</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea"> Japan and South Korea</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/thailand/2-weeks-in-thailand">Thailand</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/vietnam/2-weeks-itinerary">Vietnam</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/india/2-week-itinerary">India</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="https://www.chinahighlights.com/travelguide/2-weeks-china-itinerary.htm" target="_blank">China</a>
</li>
</ul>
<ul data-menu="submenu-7" id="submenu-7" class="menu__level" tabindex="-1" role="menu" aria-label="japan">
<li class="menu__item" role="menuitem"><a href="/japan/tours/tokyo-highlights" class="menu__link">5 Days</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/1-week-itinerary">7 Days</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/mountain-and-sea">8 Days</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/japan-highlights">9 Days</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/japan/tours/cherry-blossom-spring-mini-group">10 Days</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/classic-japan">11 Days</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/family-vacation">14 Days</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/japan-china-discovery">16
Days</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/tours/summer-family-vacation">17
Days</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/3-week-itineraries">3 Weeks</a></li>
<br><br>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/plan-a-trip">Bucket List Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/japan/how-to-plan-a-family-trip-to-japan">Family Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/plan-a-cherry-blossom-trip">Cherry
Blossom Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/planning-a-summer-trip">Summer
Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/japan/plan-a-winter-trip">Winter Trip</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/asia/plan-a-two-week-itinerary-in-japan-and-south-korea">Japan-South Korea Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/asia/plan-a-trip-to-china-and-japan">Japan-China Trip</a></li>
<li class="menu__item" role="menuitem"><a class="menu__link"
href="/asia/plan-a-trip-to-japan-and-thailand">Japan-Thailand Trip</a></li>
</ul>
<ul data-menu="submenu-9" id="submenu-9" class="menu__level" tabindex="-1" role="menu" aria-label="reviews"> <ul data-menu="submenu-9" id="submenu-9" class="menu__level" tabindex="-1" role="menu" aria-label="reviews">
<li class="menu__item" role="menuitem"><a class="menu__link" href="/reviews" id="all_reviews_mobile">Asia <li class="menu__item" role="menuitem"><a class="menu__link" href="/reviews" id="all_reviews_mobile">Asia
@ -327,8 +118,6 @@
id="china_reviews_mobile">China Travel Reviews</a></li> id="china_reviews_mobile">China Travel Reviews</a></li>
</ul> </ul>
</div> </div>
</nav> </nav>
<!--移动头部 结束--> <!--移动头部 结束-->
@ -340,11 +129,12 @@
<div id="main_content_mobile"> <div id="main_content_mobile">
<main>
<!--@CUSTOM-CONENT@--> <!--@CUSTOM-CONENT@-->
</main>
<!--@TIPS-RIGHT@--> <!--@TIPS-RIGHT@-->
<div class="info_tm_button"><a href="/forms/tailormade" id="create_my_trip_button_mobile">Create my trip</a></div> <div class="info_tm_button"><a href="/forms/tailormade?product_code=" id="create_my_trip_button_mobile">Create my trip</a></div>
</div> </div>
@ -356,13 +146,13 @@
<!--移动底部--> <!--移动底部-->
<footer> <footer>
<div class="infotailor"> <div class="infotailor">
<span class="infotailorword">We are here to help you...<br> Start planning your tailor-made tour with 1-1 help <span class="infotailorword">Start planning your tailor-made tour with 1-1 help
from our travel advisors. from our travel advisors.
<span class="infotailormade"><a href="/forms/tailormade?product_code=">Create My Trip</a></span> <span class="infotailormade"><a href="/forms/tailormade?product_code=">Create My Trip</a></span>
</span> </span>
<div class="tp_banner">4.9 Excellent<img src="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" <div class="tp_banner">4.9 Excellent<img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png"
class="img-responsive" alt="TrustPilot rating" width="100px"> class="img-responsive" alt="TrustPilot rating" width="100px">
<img src="https://data.asiahighlights.com/image/about/logo-white.png" class="img-responsive" <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://data.asiahighlights.com/image/about/logo-white.png" class="img-responsive"
alt="TrustPilot Logo" width="73px"> alt="TrustPilot Logo" width="73px">
</div> </div>
</div> </div>
@ -372,74 +162,73 @@
<p style="text-align: center;">Be the first to receive exciting updates, exclusive promotions, and valuable <p style="text-align: center;">Be the first to receive exciting updates, exclusive promotions, and valuable
travel tips from our travel tips from our
team of experts. </p> team of experts. </p>
<form action="https://www.asiahighlights.com/orders/newsletter_save" method="post" id="newsletter_form" <span class="infotailormade"><a href="/newsletter">Click to sign up</a></span>
name="newsletter_form" novalidate="">
<label id="name_area">
<input type="text" name="name" id="newsletter_realname" class="contact_name" placeholder="* Your name">
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_realname_errmsg">Please fill
up your name.</div>
</label>
<label id="email_area">
<input type="email" class="safyemail autoemail ui-autocomplete-input contact_email" name="email"
id="newsletter_email" autocomplete="off" placeholder="* Email">
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_email_errmsg">Please fill up
your email address.</div>
<div style="color: #a31022;display: none" class="requiredArea" id="newsletter_email_verify_errmsg">Please
verify your email.</div>
</label>
<button id="submit_newsletter" type="button" class="sendInquiry">Inspire Me</button>
</form>
</div> </div>
</div> </div>
<div class="bottom_why_us"> <div class="bottom_why_us">
<h2>The Asia Highlights Experience</h2> <h2>Why Asia Highlights</h2>
<div class="table-responsive"> <div class="table-responsive">
<table class="why_us_table"> <table class="why_us_table">
<tbody> <tbody>
<tr> <tr>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-1.png" <div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://images.asiahighlights.com/allpicture/2024/02/2fa10d72338f4942af532a909a486215_cut_100x100_241.png"
alt="1-to-1 Expert Planning" class="img-responsive"> alt="Customize Your Tour" class="img-responsive" width="100" height="100"/></div>
<h3>1-to-1 Expert Planning</h3>
<p>Your tour will be tailor-made to suit you by a destination expert. Your personal travel advisor <h3>Customize Your Tour</h3>
will always reply within 24 hours.</p> <ul class="infolist">
</div> <li>Travel Advisors Rooted in Asia</li>
</td> <li>Instant Response, No More Waits! </li>
<td> <li>Direct Connections, Supreme Values</li>
<div class="bottom_why_us_content"> </ul>
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-2.png"
alt="Personal Journeys" class="img-responsive"> </div>
<h3>Personal Journeys</h3> </td>
<p>Enjoy having your own personal local guide and ride. Explore destinations at your own pace. Have as <td>
much flexibility as possible.</p> <div class="bottom_why_us_content">
</div> <div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://images.asiahighlights.com/allpicture/2024/02/128f3292b9054cd295eeaf0a6223ee93_cut_100x100_241.png"
</td> alt="Maximize Your Flexibility" class="img-responsive" width="100" height="100"/></div>
<td> <h3>Maximize Your Flexibility</h3>
<div class="bottom_why_us_content"> <ul class="infolist">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-3.png" <li>Your own personal guide and ride. </li>
alt="Authentic Experiences" class="img-responsive"> <li> Explore at your own pace. </li>
<h3>Authentic Experiences</h3> <li> Unparalleled flexibility, impossible on a group tour.</li>
<p>Go beyond the sightseeing. Understand the destinations by practicing the local culture and </ul>
interacting with local people.</p> </div>
</div> </td>
</td>
<td> <td>
<div class="bottom_why_us_content"> <div class="bottom_why_us_content">
<img src="https://data.globalhighlights.com/image/aboutus/ah-bottom-why-us-tag-4.png" <div class="whyus_image"><img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://images.asiahighlights.com/allpicture/2024/02/93cce481fbbb427882ce36285d73119d_cut_100x100_241.png"
alt="One-Stop Service" class="img-responsive"> alt="Ensure Your Satisfactory" class="img-responsive" width="100" height="100"/></div>
<h3>One-Stop Service</h3> <h3>Ensure Your Satisfactory</h3>
<p>Leave all the booking work to us, including international and internal transportation, visas, <ul class="infolist">
hotels, meals, and activities.</p> <li>The Top 20% nationwide guides at your service.</li>
</div> <li>20% more space on your group's transportation.</li>
</td> <li> 24/7 emergency support.</li>
</tr> </ul>
</tbody> </div>
</table> </td>
<td>
<div class="bottom_why_us_content">
<div class="whyus_image"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://images.asiahighlights.com/allpicture/2024/02/03f93f0c74d548bf9ebd55796545c25b_cut_100x100_241.png"
alt="Celebrate Your Journey" class="img-responsive" width="100"
height="100" /></div>
<h3>Celebrate Your Journey</h3>
<ul class="infolist">
<li>Family adventures</li>
<li> Celebrate milestones with style!</li>
<li> Photographer service for special moments</li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</div> </div>
</div>
</div>
<div class="bottom_destinations"> <div class="bottom_destinations">
<div class="footerbox"> <div class="footerbox">
@ -447,68 +236,39 @@
margin-top: 0; margin-top: 0;
text-align: center; text-align: center;
">Where Can We Take You Today?</h2> ">Where Can We Take You Today?</h2>
<div class="listtour"> <div class="listtour">
<div class="destination_links">
<div class="destination_links"> <ul>
<ul> <li><a href="https://www.chinahighlights.com/" target="_blank" rel="nofollow">China</a></li>
<li><a href="/southeast-asia/tours">Southeast Asia Tours</a></li> <li><a href="https://www.globalhighlights.com/europe" target="_blank" rel="nofollow">Europe</a></li>
<li><a href="/thailand/tours">Thailand Tours</a></li>
</ul>
<li><a href="/cambodia/tours">Cambodia Tours</a></li> </div>
<div class="destination_links">
<li><a href="/indonesia/bali/tours">Bali Tours</a></li> <ul>
<li><a href="/india/tours">India Tours</a></li> <li><a href="https://www.globalhighlights.com/middle-east/tours" target="_blank" rel="nofollow">Middle East </a></li>
<li><a href="/bhutan">Bhutan</a></li> <li><a href="https://www.globalhighlights.com/african-safari-tours/tours" target="_blank" rel="nofollow">African Safari</a></li>
<li><a href="/myanmar/tours">Myanmar Tours</a></li> </ul>
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia Tours</a></li> </div>
</ul> </div>
</div>
<div class="destination_links">
<ul>
<li><a href="/japan/tours">Japan Tours</a></li>
<li><a href="/vietnam/tours">Vietnam Tours</a></li>
<li><a href="/singapore">Singapore</a></li>
<li><a href="/laos/trip-plan">Laos</a></li>
<li><a href="/nepal">Nepal</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China Tours</a></li>
</ul>
</div>
</div>
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="https://www.globalhighlights.com/egypt/tours" target="_blank">Egypt Tours</a></li>
<li><a href="https://www.globalhighlights.com/turkey/tours" target="_blank">Turkey Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="https://www.globalhighlights.com/morocco/tours" target="_blank">Morocco Tours</a></li>
<li><a href="https://www.globalhighlights.com/jordan/plan-a-trip" target="_blank">Jordan</a>
</li>
</ul>
</div>
</div>
</div> </div>
</div> </div>
<div class="infobottom"> <div class="infobottom">
<div class="bottomlogoinfo">At Asia Highlights, we are committed to providing you a premium, quality private <div class="bottomlogoinfo">
tour, whether it's a milestone trip, family trip, or bucketlist trip — your planning will be made easy with <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" originalsrc="https://images.asiahighlights.com/allpicture/2024/03/1437fad7aabf4cf297ae5cefce15b241_cut_1191x842_241.png" class="img-responsive" style="width: 150px; margin: 0 auto;" alt="Asia Highlights' logo">
just one specialist throughout. <a href="/about-us">Know more...</a>
<img src="https://data.asiahighlights.com/grey.gif" <img src="https://data.asiahighlights.com/grey.gif"
originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" loader="lazy" originalsrc="https://data.asiahighlights.com/pic/trustpilot-new-icon.png" loader="lazy" alt="tour review"
class="bottomlogocenter img-responsive" style="width: 160px; margin-top: 15px;"> class="bottomlogocenter img-responsive" style="width: 160px; margin-top: 15px;">
Rated 4.9 out of 5 | Excellent Rated 4.9 out of 5 | 98.8% Excellence<br>
China Highlights International<br> Travel Service Co., LTD
</div> </div>
<div class="bottommedia"> <div class="bottommedia">
<span class="followtitle">Follow Us</span> <span class="followtitle">Follow Us</span>
<ul> <ul>
<li><a href="https://www.facebook.com/AsiaHighlights/" rel="nofollow" title="Follow us on Facebook" <li style="margin-bottom: 30px;"><a href="https://www.facebook.com/AsiaHighlights/" rel="nofollow" title="Follow us on Facebook"
target="_blank"> target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30"
@ -518,7 +278,10 @@
</path> </path>
</svg>Facebook </svg>Facebook
</a></li> </a></li>
<li style="margin-bottom: 30px;"><a href="https://www.pinterest.com/AsiaHighlights/_saved/" rel="nofollow" title="Share us on Pinterest" target="_blank"><svg id="svg--pinterest" viewBox="-180 -180 850 850">
<path id="pinterest" fill="#ffffff" d="M430.149,135.248C416.865,39.125,321.076-9.818,218.873,1.642 C138.071,10.701,57.512,76.03,54.168,169.447c-2.037,57.029,14.136,99.801,68.399,111.84 c23.499-41.586-7.569-50.676-12.433-80.802C90.222,77.367,252.16-6.718,336.975,79.313c58.732,59.583,20.033,242.77-74.57,223.71 c-90.621-18.179,44.383-164.005-27.937-192.611c-58.793-23.286-90.013,71.135-62.137,118.072 c-16.355,80.711-51.557,156.709-37.3,257.909c46.207-33.561,61.802-97.734,74.57-164.704 c23.225,14.136,35.659,28.758,65.268,31.038C384.064,361.207,445.136,243.713,430.149,135.248z"></path>
</svg>Pinterest</a>
</li>
<li><a href="https://www.instagram.com/asiahighlights/" rel="nofollow" title="Follow us on Instagram" <li><a href="https://www.instagram.com/asiahighlights/" rel="nofollow" title="Follow us on Instagram"
target="_blank"> target="_blank">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
@ -534,141 +297,53 @@
<div class="bottomlinks"> <div class="bottomlinks">
<span class="followtitle"><a href="/about-us" rel="nofollow">About Us</a></span> <span class="followtitle"><a href="/about-us">About Us</a></span>
<ul> <ul>
<li><a href="/travel-agents">Travel Agents</a></li> <li><a href="/about-us">About us</a></li>
<li><a href="/reviews">Reviews</a></li> <li><a href="/travel-agents">Travel Agents</a></li>
<li><a href="/about-us/history" rel="nofollow">History</a></li> <li><a href="/reviews">Reviews</a></li>
<li><a href="/about-us/our-differences" rel="nofollow">Our Differences</a></li> <li><a href="/contact-us" >Contact us</a></li>
<li><a href="/reviews" rel="nofollow">Reviews</a></li> <li><a href="/about-us/loyalty-program">Loyalty Program</a></li>
<li><a href="/contact-us" rel="nofollow">Contact Us</a></li> <li><a href="/privacy" >Privacy Policy</a></li>
<li><a href="/privacy">Privacy Policy</a></li> <li><a href="/terms-of-use">Terms</a></li>
<li><a href="/terms-of-use">Terms</a></li>
</ul> </ul>
</div> </div>
<div class="language_links">
<span class="followtitle">Language</span>
<div class="listtour" style="display: flex;">
<div><ul style="width:185px;">
<li><a href="https://www.chinarundreisen.com/" target="_blank" rel="nofollow">Deutsch</a></li>
<li><a href="https://www.voyageschine.com/" target="_blank" rel="nofollow">Français</a></li>
<li><a href="https://www.viaje-a-china.com/" target="_blank" rel="nofollow">Español</a></li>
</ul></div>
<div>
<ul>
<li><a href="https://www.viaggio-in-cina.it/" target="_blank" rel="nofollow">Italiano</a></li>
<li><a href="https://www.chinahighlights.ru/" target="_blank" rel="nofollow">Русский</a></li>
<li><a href="https://www.arachina.com/" target="_blank" rel="nofollow">日本語</a></li>
</ul>
</div>
</div>
</div>
<div class="clear"></div> <div class="clear"></div>
<div class="featureon" style="margin-bottom: 50px;"> <div class="featureon" style="margin-bottom: 50px;">
<span class="followtitle">Featured on</span> <span class="followtitle">Featured on</span>
<img src="https://data.asiahighlights.com/grey.gif" loader="lazy" width="436" height="250" <a href="/about-us/who-recommended"> <img src="https://data.asiahighlights.com/grey.gif" loader="lazy" width="436" height="250"
originalsrc="https://data.chinahighlights.com/pic/guide/info-template-feature-on.png" alt="Social medias" originalsrc="https://data.chinahighlights.com/pic/guide/info-template-feature-on.png" alt="Social medias"
class="img-responsive bottomfeature" style="opacity: 1; transition: opacity 0.5s ease-in-out 0s;"> class="img-responsive bottomfeature" style="opacity: 1; transition: opacity 0.5s ease-in-out 0s;"></a>
</div> </div>
<div class="featureon"> <div class="featureon">
<span class="followtitle">Company Info</span> <span class="followtitle">Address</span>
China Highlights International Travel Service Co., LTD<br> Building 6, Chuangyi Business Park, 70 Qilidian Road, Guilin, Guangxi, 541004, China
Corporate Number: 914503003486045699
</div> </div>
</div> </div>
<div class="bottomlogo"> <div class="bottomlogo">
© 2016-2024 Asia Highlights <br>— Discovery Your Way! © 2016-2024 Asia Highlights <br>— Discovery Your Way!
</div> </div>
<div class="web_cookie" id='gotIdArea' style='display: none;'>
<p>Asia Highlights uses cookies to give you the best possible service. If you continue browsing, you agree to the
use of cookies. More details can be found in our <a href="/privacy">privacy policy</a>.</p>
<div class="cookie_close" id="gotItBtn" style="float: right;
padding: 5px 10px;
cursor: pointer;
background: #fff;
font-weight: 600;
font-size: 16px;">X</div>
</div>
<script>
var GOT_IT_KEY = '__asia_highlights_you_agree_to_use_of_cookies__';
if (window.localStorage && localStorage.getItem(GOT_IT_KEY)) {
console.info('If you continue browsing, you agree to the use of cookies.');
} else {
document.getElementById('gotIdArea').style.display = '';
if (window.localStorage) {
localStorage.setItem(GOT_IT_KEY, '1');
}
var gotItBtn = document.getElementById('gotItBtn');
gotItBtn.addEventListener('click', function (evt) {
document.getElementById('gotIdArea').style.display = 'none';
});
setTimeout(function () {
document.getElementById('gotIdArea').style.display = 'none';
}, 10000);
}
</script>
<!--newsletter表单 JS-->
<script
src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
var submitbutton = document.getElementById("submit_newsletter");
var newsletterForm = document.getElementById("newsletter_form");
submitbutton.addEventListener('click', function (event) {
var validateResult = validateNewsletterForm();
if (validateResult) {
if (typeof (grecaptcha) === "undefined") {
console.warn('grecaptcha is disabled.');
newsletterForm.submit();
} else {
grecaptcha.enterprise.ready(async () => {
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', { action: 'ADD_TO_CART' });
var el = document.createElement("input");
el.type = "hidden";
el.name = "__grecaptcha_token__";
el.value = token;
newsletterForm.appendChild(el);
newsletterForm.submit();
submitbutton.innerText = "Submitted successfully";
});
}
}
});
});
function validateNewsletterForm() {
var result = true;
var realnameVal = document.getElementById("newsletter_realname").value;
var emailVal = document.getElementById("newsletter_email").value;
var realnameErrEl = document.getElementById("newsletter_realname_errmsg");
var emailErrEl = document.getElementById("newsletter_email_errmsg");
var emailVerifyErrEl = document.getElementById("newsletter_email_verify_errmsg");
realnameErrEl.style.display = 'none';
emailErrEl.style.display = 'none';
emailVerifyErrEl.style.display = 'none';
if (realnameVal === '') {
realnameErrEl.style.display = '';
result = false;
}
if (emailVal === '') {
emailErrEl.style.display = '';
result = false;
} else {
var emailPattern = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
if (!emailPattern.test(emailVal)) {
emailVerifyErrEl.style.display = '';
result = false;
}
}
return result;
}
</script>
<script>
(function (w, d, i) {
var navbar = d.getElementById(i);
var prevScrollpos = w.pageYOffset;
w.onscroll = function() {
var currentScrollPos = w.pageYOffset;
if (prevScrollpos > currentScrollPos) {
navbar.style.top = '0';
} else {
navbar.style.top = '-100px';
}
prevScrollpos = currentScrollPos;
}
})(window, document, 'header');
</script>
</footer> </footer>
<!--移动底部 结束--> <!--移动底部 结束-->
@ -798,5 +473,4 @@
<!--@STRUCTURED-DATA-BREADCRUMB-BLOCK@--> <!--@STRUCTURED-DATA-BREADCRUMB-BLOCK@-->
<!--@STRUCTURED-DATA-ARTICLE-BLOCK@--> <!--@STRUCTURED-DATA-ARTICLE-BLOCK@-->
</body> </body>
</html> </html>

@ -265,8 +265,9 @@
return dateFilter(date); return dateFilter(date);
}], }],
minDate: new Date().fp_incr(1), minDate: new Date().fp_incr(3),
maxDate: new Date().fp_incr(540) maxDate: new Date().fp_incr(540),
defaultDate: new Date().fp_incr(3)
}); });
//日期结束 //日期结束

@ -1,42 +1,62 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;padding-bottom: 0;">China Highlights, <a href="https://www.asiahighlights.com/" target="blank">Asia Highlights</a>, and <a href="https://www.globalhighlights.com/" target="blank">Global Highlights</a> collaborate to provide families and couples with personalized and stress-free experiences in diverse destinations.</p> <p style="text-align: center;
margin-bottom: 20px;
padding-bottom: 0;" class="city_feedback">Discover real reviews of <a href="/aboutus/highlights-travel-family.htm">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
<div class="listtour"> <div style="display: inline-block;" class="city_feedback_tag">
<div style="margin: 0 10px;"> <img alt="" class="img-responsive" height="69" <div style="margin: 0 10px; float: left;"> <img alt="" class="img-responsive" style="width: 150px;"
src="https://data.chinahighlights.com/image/aboutus/awards/china-highlights-ta-2022-certificate.png" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" alt="Trip Advisor certificate of 2024">
width="175"> </div>
<img alt="" src="https://data.chinahighlights.com/image/aboutus/feedback/five-star.png" <div style="margin: 0 10px; float: left;">
class="img-responsive" style="margin: 5px auto;"> <img alt="Tour Review" class="img-responsive"
</div> src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" width="150px">
<div style="margin: 0 10px;"> </div>
<img alt="Tour Review" class="img-responsive" height="278" </div>
src="https://data.asiahighlights.com/image/about/logo-black.png" width="175px">
<img alt="" height="40" src="https://data.asiahighlights.com/pic/trustpilot-new-icon.png"
width="175px" class="img-responsive">
</div>
</div>
<!--单个目的地反馈 展示30条反馈内容每条反馈包括标题正文客人名字反馈时间反馈链接-->
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong style="height: auto;"><?php echo $feedback['title'] ?></strong>
<p><?php echo $feedback['content'] ?></p> <img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <p style="height:auto;"><?php echo $feedback['content'] ?></p>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<div class="skipBox"> <h3>All Destinations' Feedbacks</h3>
<div class="headerText">Asia Highlights Reviews</div> <div class="listtour">
<div>
<div class="skipAhead"> <ul class="infolist">
<ul> <li><a href="/reviews/guilin.htm">Guilin</a></li>
<li><a href="#thailand">Thailand reviews</a></li> <li><a href="/reviews/beijing.htm">Beijing</a></li>
<li><a href="#where">Vietnam reviews</a></li> <li><a href="/reviews/tibet.htm">Tibet</a></li>
<li><a href="#itinerary">Cambodia reviews</a></li> <li><a href="/reviews/huangshan.htm">Huangshan</a></li>
<li><a href="#avoid">Japan reviews</a></li>
<li><a href="#budget">India reviews</a></li> </ul>
<li><a href="#budget">Myanmar reviews</a></li> </div>
<div>
<ul class="infolist">
<li><a href="/reviews/chengdu.htm">Chengdu</a></li>
<li><a href="/reviews/hangzhou.htm">Hangzhou</a></li>
<li><a href="/reviews/taiwan.htm">Taiwan</a></li>
<li><a href="/reviews/huangshan.htm">Huangshan</a></li>
</ul>
</div>
<div>
<ul class="infolist">
<li><a href="/reviews/suzhou.htm">Suzhou</a></li>
<li><a href="/reviews/lijiang.htm">Lijiang</a></li>
<li><a href="/reviews/dali.htm">Dali</a></li>
<li><a href="/reviews/zhangjiajie.htm">Zhangjiajie</a></li>
</ul> </ul>
</div> </div>
</div> <div>
<ul class="infolist">
<li><a href="/reviews/xian.htm">Xi'an</a></li>
<li><a href="/reviews/shanghai.htm">Shanghai</a></li>
<li><a href="/reviews/kunming.htm">Kunming</a></li>
<li><a href="/reviews/zhangjiajie.htm">Zhangjiajie</a></li>
</ul>
</div>
</div>

@ -6,13 +6,14 @@
<?php foreach ($Beijing as $index => $feedback) {?> <?php foreach ($Beijing as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/beijing.htm">Read more Beijing travel reviews.</a></p>
<h2 id="vietnam">Xi'an Travel Reviews</h2> <h2 id="vietnam">Xi'an Travel Reviews</h2>
@ -20,13 +21,14 @@
<?php foreach ($xian as $index => $feedback) {?> <?php foreach ($xian as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/xian.htm">Read more Xi'an travel reviews.</a></p>
<h2 id="cambodia">Chengdu Travel Reviews</h2> <h2 id="cambodia">Chengdu Travel Reviews</h2>
@ -34,13 +36,14 @@
<?php foreach ($Chengdu as $index => $feedback) {?> <?php foreach ($Chengdu as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/chengdu.htm">Read more Chengdu travel reviews.</a></p>
<h2 id="japan">Guilin Travel Reviews</h2> <h2 id="japan">Guilin Travel Reviews</h2>
@ -48,13 +51,14 @@
<?php foreach ($Guilin as $index => $feedback) {?> <?php foreach ($Guilin as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/guilin.htm">Read more Guilin travel reviews.</a></p>
<h2 id="japan">Tibet Travel Reviews</h2> <h2 id="japan">Tibet Travel Reviews</h2>
@ -62,13 +66,14 @@
<?php foreach ($Lhasa as $index => $feedback) {?> <?php foreach ($Lhasa as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/tibet.htm">Read more Tibet travel reviews.</a></p>
<h2 id="myanmar">Suzhou Travel Reviews</h2> <h2 id="myanmar">Suzhou Travel Reviews</h2>
@ -76,13 +81,14 @@
<?php foreach ($Suzhou as $index => $feedback) {?> <?php foreach ($Suzhou as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/suzhou.htm">Read more Suzhou travel reviews.</a></p>
<h2 id="china">Shanghai Travel Reviews</h2> <h2 id="china">Shanghai Travel Reviews</h2>
@ -90,27 +96,29 @@
<?php foreach ($Shanghai as $index => $feedback) {?> <?php foreach ($Shanghai as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/shanghai.htm">Read more Shanghai travel reviews.</a></p>
<h2 id="china">Zhangjiajie Travel Reviews</h2> <h2 id="china">Zhangjiajie Travel Reviews</h2>
<?php if (!empty($Zhangjiajie)) {?> <?php if (!empty($Zhangjiajie)) {?>
<?php foreach ($Zhangjiajie as $index => $feedback) {?> <?php foreach ($Zhangjiajie as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/zhangjiajie.htm">Read more Zhangjiajie travel reviews.</a></p>
<h2 id="china">Lijiang Travel Reviews</h2> <h2 id="china">Lijiang Travel Reviews</h2>
@ -118,13 +126,14 @@
<?php foreach ($Lijiang as $index => $feedback) {?> <?php foreach ($Lijiang as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/lijiang.htm">Read more Lijiang travel reviews.</a></p>
<h2 id="china">Dali Travel Reviews</h2> <h2 id="china">Dali Travel Reviews</h2>
@ -132,13 +141,14 @@
<?php foreach ($Dali as $index => $feedback) {?> <?php foreach ($Dali as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/dali.htm">Read more Dali travel reviews.</a></p>
<h2 id="china">Kunming Travel Reviews</h2> <h2 id="china">Kunming Travel Reviews</h2>
@ -146,13 +156,14 @@
<?php foreach ($Kunming as $index => $feedback) {?> <?php foreach ($Kunming as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/kunming.htm">Read more Kunming travel reviews.</a></p>
<h2 id="china">Huangshan Travel Reviews</h2> <h2 id="china">Huangshan Travel Reviews</h2>
@ -160,13 +171,14 @@
<?php foreach ($Huangshan as $index => $feedback) {?> <?php foreach ($Huangshan as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/huangshan.htm">Read more Huangshan travel reviews.</a></p>
<h2 id="china">Hangzhou Travel Reviews</h2> <h2 id="china">Hangzhou Travel Reviews</h2>
@ -174,9 +186,11 @@
<?php foreach ($Hangzhou as $index => $feedback) {?> <?php foreach ($Hangzhou as $index => $feedback) {?>
<div class="feedback_content"> <div class="feedback_content">
<strong><?php echo $feedback['title'] ?></strong> <strong><?php echo $feedback['title'] ?></strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="review rating">
<p><?php echo $feedback['content'] ?></p> <p><?php echo $feedback['content'] ?></p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">More</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name"><?php echo $feedback['customer'] ?>,<?php echo $feedback['createdOn'] ?></div> <div class="customer_name"><?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?></div>
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<p><a href="/reviews/hangzhou.htm">Read more Hangzhou travel reviews.</a></p>

@ -1,39 +1,32 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;padding-bottom: 0;">China Highlights, <a href="https://www.asiahighlights.com/" target="blank">Asia Highlights</a>, and <a href="https://www.globalhighlights.com/" target="blank">Global Highlights</a> collaborate to provide families and couples with personalized and stress-free experiences in diverse destinations.</p> <p style="text-align: center;margin-top: 80px;margin-bottom: 0;padding-bottom: 0;">Discover real reviews of <a href="/aboutus/highlights-travel-family.htm">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
<div class="visible-xs" style="margin: 20px 20px 90px 20px; "> <div class="visible-xs" style="margin: 20px 20px 110px 20px; ">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="float: left; width: 150px; margin: 0 auto; <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="float: left; width: 150px; margin: 0 auto;
display: block;" width="175"> display: block;" width="175" alt="Trip Advisor certificate of 2024">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; display: block; <img height="40" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 120px; height: auto; display: block;
float: right;" width="211"> float: right;" width="211" alt="Tour Review">
</div> </div>
<div class="table-responsive" style="margin-bottom: 20px;"> <div class="table-responsive" style="margin-bottom: 20px;" rel="nofollow">
<table> <table style="width: max-content;">
<tbody> <tbody>
<tr> <tr>
<td class="hidden-xs"> <td class="hidden-xs feedback_logo">
<div class="feedback_logo" > <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="margin: 0px auto; " width="175" alt="Trip Advisor certificate of 2024"> <img alt="Tour Review" class="img-responsive" height="278" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="margin: 0px auto; " width="175"> <img alt="Tour Review" class="img-responsive" height="278" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div>
</td> </td>
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
<td> <td class="tour_feedback feedback_content">
<div class="tour_feedback">
<div class="feedback_content">
<strong> <strong>
<?php echo $feedback['title'] ?> <?php echo $feedback['title'] ?>
</strong> </strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="Tour Review">
<p> <p>
<?php echo $feedback['content'] ?> <?php echo $feedback['content'] ?>
</p> </p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">more</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">more</a>
<div class="customer_name"> <div class="customer_name">
<?php echo $feedback['createdOn'] ?>, <?php echo $feedback['createdOn'] ?>, <?php echo $feedback['customer'] ?>
<?php echo $feedback['customer'] ?> </div>
</div>
</div>
</div>
</td> </td>
<?php }?> <?php }?>
</tr> </tr>

@ -1,14 +1,15 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;padding-bottom: 0;">China Highlights, <a href="https://www.asiahighlights.com/" target="blank">Asia Highlights</a>, and <a href="https://www.globalhighlights.com/" target="blank">Global Highlights</a> collaborate to provide families and couples with personalized and stress-free experiences in diverse destinations.</p><div class="visible-xs" style="margin: 0 20px;"> <p style="text-align: center;margin-top: 80px;margin-bottom: 0;padding-bottom: 0;">Discover real reviews of <a href="/aboutus/highlights-travel-family.htm">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="float: left; width: 150px; " width="175"> <div class="visible-xs" style="margin: 0 20px;">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; " width="211"> <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="float: left; width: 150px; " width="175" alt="Trip Advisor certificate of 2024">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; " width="211" alt="trustpolit rating">
</div> </div>
<div class="table-responsive" style="margin-bottom: 20px;"> <div class="table-responsive" style="margin-bottom: 20px;" rel="nofollow">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td class="hidden-xs"> <td class="hidden-xs">
<div class="feedback_logo"> <div class="feedback_logo">
<img class="img-responsive" height="69" src="https://data.asiahighlights.com/image/forms/ah-ta-2023-certificate.png" style="margin: 0px auto; " width="175"> <img alt="Tour Review" class="img-responsive" height="278" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div> <img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="margin: 0px auto; " width="175" alt="Trip Advisor certificate of 2024"> <img alt="Tour Review" class="img-responsive" height="278" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133"></div>
</td> </td>
<?php foreach ($feedback_list as $index => $feedback) {?> <?php foreach ($feedback_list as $index => $feedback) {?>
@ -18,13 +19,13 @@
<strong> <strong>
<?php echo $feedback['title'] ?> <?php echo $feedback['title'] ?>
</strong> </strong>
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://data.asiahighlights.com/pic/trustpilot-new-icon.png'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://data.chinahighlights.com/image/aboutus/feedback/five-star.png'; } ?>"></p>
<p> <p>
<?php echo $feedback['content'] ?> <?php echo $feedback['content'] ?>
</p> </p>
<a href="<?php echo $feedback['url'] ?>" target="_blank">more</a> <a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">more</a>
<div class="customer_name"> <div class="customer_name">
<?php echo $feedback['createdOn'] ?>, <?php echo $feedback['createdOn'] ?>, <?php echo $feedback['customer'] ?>
<?php echo $feedback['customer'] ?>
</div> </div>
</div> </div>

@ -3,9 +3,9 @@
<div class="feedback_content_right" style="width: 100%; margin-bottom: 50px;"> <div class="feedback_content_right" style="width: 100%; margin-bottom: 50px;">
<div class="feedback_content" style="box-shadow: 0px 0px 8px 2px #d1d1d1;"> <div class="feedback_content" style="box-shadow: 0px 0px 8px 2px #d1d1d1;">
<div class="photoBlock300" style="width: auto;"><img alt="Trip Advisor travelers' choice 2022" src="https://data.chinahighlights.com/image/aboutus/china-highlights-ta-certificate-2022.jpg" width="128" height="150" class="img-responsive" ></div> <div class="photoBlock300" style="width: auto;"><img alt="Trip Advisor travelers' choice 2024" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" width="128" height="150" class="img-responsive" ></div>
<p><strong><?php echo $feedback_data['title'] ?></strong></p> <p><strong><?php echo $feedback_data['title'] ?></strong></p>
<img alt="" class="feedback-rate" src="https://data.chinahighlights.com/image/aboutus/feedback/five-star.png" width="104" height="20"><div class="review_date">reviewed <?php echo $feedback_data['createdOn'] ?>, <?php echo $feedback_data['customer'] ?></div> <img alt="" class="feedback-rate" src="https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg" width="104" height="20" alt="trip advisor rating"><div class="review_date">reviewed <?php echo $feedback_data['createdOn'] ?>, <?php echo $feedback_data['customer'] ?></div>
<p><?php echo $feedback_data['content'] ?>&nbsp;<a href="<?php echo $feedback_data['url'] ?>" target="_blank">more</a></p> <p><?php echo $feedback_data['content'] ?>&nbsp;<a href="<?php echo $feedback_data['url'] ?>" target="_blank" rel="nofollow">more</a></p>
</div> </div>
</div> </div>

@ -1,15 +1,7 @@
<div class="topcontent"> <div class="topcontent">
<section> <section>
<?php if (!empty($ic_photo)) { ?>
<div class="infotopimage">
<img src="<?php echo 'https://images.chinahighlights.com'.$ic_photo; ?>"
alt="<?php echo !empty($ic_title)?$ic_title:'H1 title Chinahighlights mobile first template'; ?>" class="img-responsive">
<div class="ta_tag">
<img src="https://data.chinahighlights.com/image/forms/ch-2023-trip-advisor-excellent-certificate.png" style="width: 120px !important;height: auto;">
</div>
</div>
<?php } ?>
<div class="infocategory"> <div class="infocategory">
<a href="/" data-count="<?php echo count($breadcrumb_data) ?>">Home</a> <a href="/" data-count="<?php echo count($breadcrumb_data) ?>">Home</a>
<?php foreach ($breadcrumb_data as $index => $item) {?> <?php foreach ($breadcrumb_data as $index => $item) {?>
@ -18,24 +10,39 @@
</div> </div>
<h1><?php echo !empty($ic_title)?$ic_title:'H1 title Chinahighlights mobile first template'; ?></h1> <h1><?php echo !empty($ic_title)?$ic_title:'H1 title Chinahighlights mobile first template'; ?></h1>
<!--<p class="subheadline">to do</p> --> <!--<p class="subheadline">to do</p> -->
<div class="authorupdate">Written by <strong><?php echo !empty($author)?$author:''; ?></strong>Updated <?php echo date("M. j, Y",strtotime($ic_datetime)); ?></div> <?php
<?php if ($ads_by_google) { ?> $OPI_CodeUrls = [
<style> 'zzy' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
#adsense-head-ads { '2' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
height: 427px; 'HWT' => 'https://www.globalhighlights.com/aboutus/team/mike-he',
min-height: 427px; 'CA' => 'https://www.globalhighlights.com/aboutus/team/carol-wang',
background: url(https://data.viaggio-in-cina.it/information-view/information/img/adsense.gif) center center no-repeat; 'SI' => 'https://www.globalhighlights.com/aboutus/team/simon-huang',
} 'TJQ' => 'https://www.globalhighlights.com/aboutus/team/cindy-tang',
@media screen and (max-width: 767px) { 'CLA' => 'https://www.globalhighlights.com/aboutus/team/claire-wang',
#adsense-head-ads { 'Albee' => 'https://www.globalhighlights.com/aboutus/team/albee-ning',
height: 320px; 'KM' => 'https://www.globalhighlights.com/aboutus/team/kimi-huang',
min-height: 320px; 'RY' => 'https://www.globalhighlights.com/aboutus/team/rita-yu',
} 'QMY' => 'https://www.globalhighlights.com/aboutus/team/chris-quan',
} 'CY' => 'https://www.globalhighlights.com/aboutus/team/cynthia-li',
</style> 'Vicky' => 'https://www.globalhighlights.com/aboutus/team/vicky-leng',
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4231674166786366" 'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li',
crossorigin="anonymous"></script> 'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
<div id="ezoic-pub-ad-placeholder-102"></div> ];
<?php } ?> $OPI_Code = empty($OPI_Code) ? '' : $OPI_Code;
if (!empty($meta_news_createdate)) {?>
<div class="authorupdate">
Written by
<?php if (array_key_exists($OPI_Code, $OPI_CodeUrls)) {?>
<strong><a href="<?php echo $OPI_CodeUrls[$OPI_Code]; ?>" target="_blank"><?php echo $author; ?></a></strong>
<?php } else { ?>
<strong><?php echo $author; ?></strong>
<?php }?>
Updated <?php echo date("M. j, Y", strtotime($meta_news_createdate)); ?>
</div>
<?php } ?>
<?php if ($ads_by_google) { ?>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4231674166786366"
crossorigin="anonymous"></script>
<?php } ?>
</section> </section>
</div> </div>

File diff suppressed because it is too large Load Diff

@ -1,6 +1,3 @@
<?php if (!empty($ic_photo)) { ?> <?php if (!empty($ic_photo)) { ?>
<div class="infotopimage">
<img src="<?php echo 'https://images.chinahighlights.com'.$ic_photo; ?>"
alt="<?php echo !empty($ic_title)?$ic_title:'H1 title Chinahighlights mobile first template'; ?>" class="img-responsive">
</div>
<?php } ?> <?php } ?>

File diff suppressed because it is too large Load Diff

@ -66,68 +66,7 @@
</td> </td>
<td>
<?php if (!empty($recommands['Tour E'])) { ?>
<div class="articlenext">
<a href="<?php echo $recommands['Tour E']->ic_url; ?>" rel="nofollow">
<img src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour E']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour E']->ic_title; ?>">
</a>
<span class="articlenexttitle"><a
href="<?php echo $recommands['Tour E']->ic_url; ?>"><?php echo $recommands['Tour E']->ic_title; ?></a>
</span>
</div>
<?php } ?>
</td>
<td>
<?php if (!empty($recommands['Tour F'])) { ?>
<div class="articlenext">
<a href="<?php echo $recommands['Tour F']->ic_url; ?>" rel="nofollow">
<img src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour F']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour F']->ic_title; ?>">
</a>
<span class="articlenexttitle"><a
href="<?php echo $recommands['Tour F']->ic_url; ?>"><?php echo $recommands['Tour F']->ic_title; ?></a>
</span>
</div>
<?php } ?>
</td>
<td>
<?php if (!empty($recommands['Tour G'])) { ?>
<div class="articlenext">
<a href="<?php echo $recommands['Tour G']->ic_url; ?>" rel="nofollow">
<img src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour G']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour G']->ic_title; ?>">
</a>
<span class="articlenexttitle"><a
href="<?php echo $recommands['Tour G']->ic_url; ?>"><?php echo $recommands['Tour G']->ic_title; ?></a>
</span>
</div>
<?php } ?>
</td>
<td>
<?php if (!empty($recommands['Tour H'])) { ?>
<div class="articlenext">
<a href="<?php echo $recommands['Tour H']->ic_url; ?>" rel="nofollow">
<img src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Tour H']->mobile_photo; ?>"
class="img-responsive" alt="<?php echo $recommands['Tour H']->ic_title; ?>"></a>
<span class="articlenexttitle"><a
href="<?php echo $recommands['Tour H']->ic_url; ?>"><?php echo $recommands['Tour H']->ic_title; ?></a>
</span>
</div>
<?php } ?>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -144,7 +83,7 @@
<table > <table >
<tbody> <tbody>
<tr> <tr>
<?php if (!empty($recommands['Article A'])) { ?> <?php if (!empty($recommands['Article A']) && isset($recommands['Article A']->ic_url)) { ?>
<td> <td>
<div class="articlenext"> <div class="articlenext">
<a href="<?php echo $recommands['Article A']->ic_url; ?>" rel="nofollow"> <img <a href="<?php echo $recommands['Article A']->ic_url; ?>" rel="nofollow"> <img
@ -157,9 +96,11 @@
</span> </span>
</div> </div>
</td> </td>
<?php } else { ?>
<div style='display: none'><?php var_dump($recommands['Article A']); ?></div>
<?php } ?> <?php } ?>
<?php if (!empty($recommands['Article B'])) { ?> <?php if (!empty($recommands['Article B']) && isset($recommands['Article B']->ic_url)) { ?>
<td> <td>
<div class="articlenext"> <div class="articlenext">
<a href="<?php echo $recommands['Article B']->ic_url; ?>" rel="nofollow"> <img <a href="<?php echo $recommands['Article B']->ic_url; ?>" rel="nofollow"> <img
@ -172,9 +113,11 @@
</span> </span>
</div> </div>
</td> </td>
<?php } else { ?>
<div style='display: none'><?php var_dump($recommands['Article B']); ?></div>
<?php } ?> <?php } ?>
<?php if (!empty($recommands['Article C'])) { ?> <?php if (!empty($recommands['Article C']) && isset($recommands['Article C']->ic_url)) { ?>
<td> <td>
<div class="articlenext"> <div class="articlenext">
<a href="<?php echo $recommands['Article C']->ic_url; ?>" rel="nofollow"> <img <a href="<?php echo $recommands['Article C']->ic_url; ?>" rel="nofollow"> <img
@ -187,9 +130,11 @@
</span> </span>
</div> </div>
</td> </td>
<?php } else { ?>
<div style='display: none'><?php var_dump($recommands['Article C']); ?></div>
<?php } ?> <?php } ?>
<?php if (!empty($recommands['Article D'])) { ?> <?php if (!empty($recommands['Article D']) && isset($recommands['Article D']->ic_url)) { ?>
<td> <td>
<div class="articlenext"> <div class="articlenext">
<a href="<?php echo $recommands['Article D']->ic_url; ?>" rel="nofollow"> <img <a href="<?php echo $recommands['Article D']->ic_url; ?>" rel="nofollow"> <img
@ -202,67 +147,11 @@
</span> </span>
</div> </div>
</td> </td>
<?php } else { ?>
<div style='display: none'><?php var_dump($recommands['Article D']); ?></div>
<?php } ?> <?php } ?>
<?php if (!empty($recommands['Article E'])) { ?>
<td>
<div class="articlenext">
<a href="<?php echo $recommands['Article E']->ic_url; ?>" rel="nofollow"> <img
src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo empty($recommands['Article E']->mobile_photo) ? $recommands['Article E']->ic_photo_img : $recommands['Article E']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Article E']->ic_title; ?>"></a>
<span class="articlenexttitle">
<a href="<?php echo $recommands['Article E']->ic_url; ?>"> <?php echo $recommands['Article E']->ic_title; ?> </a> </span>
</div>
</td>
<?php } ?>
<?php if (!empty($recommands['Article F'])) { ?>
<td>
<div class="articlenext">
<a href="<?php echo $recommands['Article F']->ic_url; ?>" rel="nofollow"> <img
src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo empty($recommands['Article F']->mobile_photo) ? $recommands['Article F']->ic_photo_img : $recommands['Article F']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Article F']->ic_title; ?>"></a>
<span class="articlenexttitle">
<a href="<?php echo $recommands['Article F']->ic_url; ?>"> <?php echo $recommands['Article F']->ic_title; ?> </a>
</span>
</div>
</td>
<?php } ?>
<?php if (!empty($recommands['Article G'])) { ?>
<td>
<div class="articlenext">
<a href="<?php echo $recommands['Article G']->ic_url; ?>" rel="nofollow"> <img
src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article G']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Article G']->ic_title; ?>"></a>
<span class="articlenexttitle">
<a href="<?php echo $recommands['Article G']->ic_url; ?>"> <?php echo $recommands['Article G']->ic_title; ?> </a>
</span>
</div>
</td>
<?php } ?>
<?php if (!empty($recommands['Article H'])) { ?>
<td>
<div class="articlenext">
<a href="<?php echo $recommands['Article H']->ic_url; ?>" rel="nofollow"> <img
src="https://data.chinahighlights.com/grey.gif" loader="lazy"
originalsrc="<?php echo $recommands['Article H']->mobile_photo; ?>"
class="img-responsive"
alt="<?php echo $recommands['Article H']->ic_title; ?>"></a>
<span class="articlenexttitle">
<a href="<?php echo $recommands['Article H']->ic_url; ?>"> <?php echo $recommands['Article H']->ic_title; ?> </a>
</span>
</div>
</td>
<?php } ?>
</tr> </tr>
</tbody> </tbody>
</table> </table>

File diff suppressed because it is too large Load Diff

@ -1,22 +1,25 @@
<div class="right_tour"> <div class="right_tour">
<div class="info_ad_title" style="display: flex;">Popular tours</div>
<div class="right_ad_list"> <div class="right_ad_list popular_tours">
<div class="info_ad_title" style="display: flex;">Popular tours</div>
<ul> <ul>
<?php foreach ($tips_right_a as $index => $info) {?> <?php foreach ($tips_right_a as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_tours"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_tours"><?php echo $info->ic_title ?></a></li>
<?php }?> <?php }?>
</ul> </ul>
</div> </div>
<div class="info_ad_title" style="display: flex;">Make the most of your time</div>
<div class="right_ad_list"> <div class="right_ad_list make_most_time">
<div class="info_ad_title" style="display: flex;">Make the most of your time</div>
<ul> <ul>
<?php foreach ($tips_right_b as $index => $info) {?> <?php foreach ($tips_right_b as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_plan"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_plan"><?php echo $info->ic_title ?></a></li>
<?php }?> <?php }?>
</ul> </ul>
</div> </div>
<div class="info_ad_title" style="display: flex;">Choose the best time to visit</div>
<div class="right_ad_list"> <div class="right_ad_list best_time_visit">
<div class="info_ad_title" style="display: flex;">Choose the best time to visit</div>
<ul> <ul>
<?php foreach ($tips_right_c as $index => $info) {?> <?php foreach ($tips_right_c as $index => $info) {?>
<li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_weather"><?php echo $info->ic_title ?></a></li> <li><a href="<?php echo $info->ic_url ?>" id="right_ad_list_weather"><?php echo $info->ic_title ?></a></li>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save