File: /www/wwwroot/nasuhang.com/wp-content/themes/twentytwentyfive/page-jn.php
<?php
/**
* Template Name: 江南旅游页
* Description: 江南旅游落地页 - 独立Vue.js页面
*/
?>
<!DOCTYPE html>
<html lang="zh">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WLQXCJPD');</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SDLT368P5Y"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-SDLT368P5Y');
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>下個月想趁著假期和家人去水鄉江南遊玩6天,我們是從台灣出發,有哪些需要注意的嗎?另外有哪些比較推薦去的景點,去過的朋友可以分享下攻略
</title>
<meta name="description" content="探索蘇杭之美,發現中國東部的歷史古城和水鄉風光。蘇杭旅遊指南,提供旅遊景點、美食、住宿和交通信息。">
<meta name="keywords" content="蘇杭旅遊, 蘇杭景點, 上海, 蘇州, 杭州, 烏鎮">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none' stroke='%23999' stroke-width='2'><circle cx='32' cy='32' r='28'/><ellipse cx='32' cy='32' rx='12' ry='28'/><line x1='4' y1='32' x2='60' y2='32'/><path d='M8 20h48M8 44h48'/></svg>" />
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/jn/static/styles.css" />
<script src="<?php echo get_template_directory_uri(); ?>/jn/js/vue.global.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/css/intlTelInput.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/intlTelInput.min.js"></script>
<script src="<?php echo get_template_directory_uri(); ?>/jn/js/axios.min.js"></script>
<script src="<?php echo get_template_directory_uri(); ?>/jn/config/config.js"></script>
<script>
<?php
$hzby_guide = get_option( 'hzby_guide_settings', array() );
$hzby_guide = wp_parse_args( $hzby_guide, array(
'name' => '', 'weChat' => '', 'tel' => '', 'address' => '',
'customerServiceId' => '', 'office' => '',
'avatar' => '', 'qrcode' => '', 'lineId' => '', 'lineQrcode' => '', 'whatsappId' => '', 'whatsappQrcode' => '',
) );
?>
var hzbyGuideConfig = {
name: <?php echo json_encode( $hzby_guide['name'] ); ?>,
weChat: <?php echo json_encode( $hzby_guide['weChat'] ); ?>,
tel: <?php echo json_encode( $hzby_guide['tel'] ); ?>,
address: <?php echo json_encode( $hzby_guide['address'] ); ?>,
customerServiceId: <?php echo json_encode( $hzby_guide['customerServiceId'] ); ?>,
office: <?php echo json_encode( $hzby_guide['office'] ); ?>,
avatar: <?php echo json_encode( $hzby_guide['avatar'] ); ?>,
qrcode: <?php echo json_encode( $hzby_guide['qrcode'] ); ?>,
lineId: <?php echo json_encode( $hzby_guide['lineId'] ); ?>,
lineQrcode: <?php echo json_encode( $hzby_guide['lineQrcode'] ); ?>,
whatsappId: <?php echo json_encode( $hzby_guide['whatsappId'] ); ?>,
whatsappQrcode: <?php echo json_encode( $hzby_guide['whatsappQrcode'] ); ?>,
};
</script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WLQXCJPD"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="app">
<svg aria-hidden="true" style="position:absolute;width:0;height:0;overflow:hidden;">
<symbol id="icon-contact-line" viewBox="0 0 24 24">
<path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596a.637.637 0 0 1-.199.031c-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595a.623.623 0 0 1 .194-.033c.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314" />
</symbol>
<symbol id="icon-contact-whatsapp" viewBox="0 0 16 16">
<path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.116.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.116-.198-.012-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.325-.335-.445-.34-.116-.007-.248-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z" />
</symbol>
<symbol id="icon-contact-wechat" viewBox="0 0 16 16">
<path d="M11.176 14.429c-2.665 0-4.826-1.8-4.826-4.018 0-2.22 2.159-4.02 4.824-4.02S16 8.191 16 10.411c0 1.21-.65 2.301-1.666 3.036a.324.324 0 0 0-.12.366l.218.81a.616.616 0 0 1 .029.117.166.166 0 0 1-.162.162.177.177 0 0 1-.092-.03l-1.057-.61a.519.519 0 0 0-.256-.074.509.509 0 0 0-.142.021 5.668 5.668 0 0 1-1.576.22ZM9.064 9.542a.647.647 0 1 0 .557-1 .645.645 0 0 0-.646.647.615.615 0 0 0 .09.353Zm3.232.001a.646.646 0 1 0 .546-1 .645.645 0 0 0-.644.644.627.627 0 0 0 .098.356Z" />
<path d="M0 6.826c0 1.455.781 2.765 2.001 3.656a.385.385 0 0 1 .143.439l-.161.6-.1.373a.499.499 0 0 0-.032.14.192.192 0 0 0 .193.193c.039 0 .077-.01.111-.029l1.268-.733a.622.622 0 0 1 .308-.088c.058 0 .116.009.171.025a6.83 6.83 0 0 0 1.625.26 4.45 4.45 0 0 1-.177-1.251c0-2.936 2.785-5.02 5.824-5.02.05 0 .1 0 .15.002C10.587 3.429 8.392 2 5.796 2 2.596 2 0 4.16 0 6.826Zm4.632-1.555a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Zm3.875 0a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Z" />
</symbol>
</svg>
<main>
<div class="container">
<div class="content-left">
<div class="hero">
<div class="question-container">
<div class="question-tags">
<div class="question-tag tag-blue">江南旅遊攻略</div>
<div class="question-tag tag-green">精選內容</div>
</div>
<h1>
下個月想趁著假期和家人去水鄉江南遊玩6天,我們是從台灣出發,有哪些需要注意的嗎?另外有哪些比較推薦去的景點,去過的朋友可以分享下攻略
</h1>
<h2>
主要想了解蘇杭、上海有什麼好玩的,哪些美食,另外玩6天5晚大概要多少錢?包含哪些費用?
</h2>
<div class="question-meta">
<div class="questioner-info">
<img class="lazy-image avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/1.jpg" alt="提問者頭像" />
<div class="questioner-details">
<span class="name">郭郭</span>
</div>
</div>
<div class="question-stats">
<span class="views">6.4k 瀏覽</span>
<span class="dot">·</span>
<span class="answers">344 回答</span>
</div>
</div>
</div>
</div>
<article>
<div class="post-content">
<div class="article-author">
<img class="lazy-image author-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/2.jpg" alt="作者頭像" />
<div class="author-meta">
<div class="author-name">晴天旅行日記</div>
<div class="author-title">旅遊達人</div>
</div>
</div>
<p>
我們一家人是最近剛從上海和蘇杭旅遊回來,這次旅行真的超出預期!全程人均花費不到 2000元人民幣,比我們自己預估的少了將近一半,而且全程都是 5鑽豪華酒店、包車出行,服務非常貼心。希望這篇攻略能幫到同樣想去江南遊玩的朋友們!
</p>
<p>
我們這次是透過朋友推薦,找到了<span class="guide-name-highlight">笑笑</span>導遊幫我們規劃行程。她是本地人,對沿線景點非常熟悉,而且服務特別用心,全程 24小時管家式服務,有任何問題隨時響應。如果你也想免費訂製專屬行程,可以直接加她联系方式諮詢:<span class="wechat-id" @click="openLine">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-line"></use></svg> LINE 在線諮詢 ]</span> <span class="wechat-id" @click="openWhatsApp">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-whatsapp"></use></svg> WhatsApp 聯繫 ]</span> <span class="wechat-id" @click="openWeixin">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-wechat"></use></svg> 微信諮詢 ]</span>·「私訊領取:高清版 6 天 5 晚手繪行程圖」
</p>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image1.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image1.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image1.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image2.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image2.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image2.jpg" alt="蘇杭" /></div>
<p><span class="bold">我們出發前也看了蘇杭必去景點,<span class="guide-name-highlight">笑笑</span>根據我們想去的景點規劃的6天路線基本上都包含了,我也把路線內容分享給你參考:
</span></p>
<p><span class="theme-color bold">
🔶第一天 全球各地--上海(贈送24小時接機入住飯店)<br>
🔶第二天 上海-->苏州·留园·寒山寺-->5A級「拈花灣·禪意小鎮」<br>
🔶第三天 无锡-->乌镇东栅一一太湖古镇(贈送漢服體驗)<br>
🔶第四天 乌镇-->杭州·西湖游船-->龙井茶园参观<br>
🔶第五天 杭州-->上海·城隍庙·外滩-->黃浦江遊船<br>
🔶第六天 上海--全球各地(贈送24小時送機)
</span></p>
<p>如果你有其他想玩的地方都可以直接加<span class="guide-name-highlight">笑笑</span>联系方式諮詢:<span class="wechat-id" @click="openLine">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-line"></use></svg> LINE 在線諮詢 ]</span> <span class="wechat-id" @click="openWhatsApp">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-whatsapp"></use></svg> WhatsApp 聯繫 ]</span> <span class="wechat-id" @click="openWeixin">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-wechat"></use></svg> 微信諮詢 ]</span>·「私訊領取:高清版 6 天 5 晚手繪行程圖」,給你免费规划行程。
</p>
<div class="img-row">
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image3.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image3.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image3.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image4.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image4.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image4.jpg" alt="蘇杭" /></div>
</div>
<p>▲ 蘇州留園 · 寒山寺 — 園林精巧,古剎鐘聲悠遠</p>
<div class="img-row">
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image5.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image5.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image5.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image6.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image6.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image6.jpg" alt="蘇杭" /></div>
</div>
<p>▲ 烏鎮东栅夜景 — 燈火闌珊,枕水人家</p>
<p><span class="bold">🌟 沿線必打卡景點推薦</span></p>
<p><span class="theme-color">【烏鎮】</span>千年水鄉古鎮,感受純粹的江南水鄉氣息,體驗「小橋·流水·人家」的水鄉美景,夜晚燈火尤為迷人
</p>
<p><span class="theme-color">【杭州西湖】</span>遊船觀賞西湖,山與水相依,水與城想融,駐足湖畔,聽西湖故事,賞西湖山水畫卷
</p>
<p><span class="theme-color">【留园】</span>到獅子林賞奇巧假山,感受江南庭園的精巧佈局,移步換景,步步皆畫
</p>
<p><span class="theme-color">【寒山寺】</span>踏入寒山寺,聆聽悠悠鐘聲,感想佛教文化的深厚底蘊,張繼《楓橋夜泊》意境重現
</p>
<p><span class="theme-color">【無錫拈花灣】</span>禪意小鎮,夜晚燈光秀絢麗多彩,白天古樸寧靜,是放鬆身心的絕佳之地
</p>
<p><span class="theme-color">【上海外灘】</span>漫步外灘,欣賞萬國建築博覽群,對岸陸家嘴摩天樓群燈火璀璨,是上海最經典的夜景打卡地
</p>
<div class="img-row">
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image21.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image21.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image21.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image22.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image22.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image22.jpg" alt="蘇杭" /></div>
</div>
<p>▲ 杭州西湖 · 無錫拈花灣 — 山水畫卷,禪意小鎮</p>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image23.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image23.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image23.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image24.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image24.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image24.jpg" alt="蘇杭" /></div>
<p>▲ 上海外灘 · 東方明珠 — 十里洋場,璀璨夜色</p>
<p><span class="bold">💰 六日遊費用包含(人均不到2000元)</span></p>
<p>1. 景點門票:寒山寺、留園、烏鎮、西湖遊船、龍井茶園等全程所有景點門票<br>
2. 全程交通:11座豪華商務空調沙發專車,舒適寬敞,全程無需自駕<br>
3. 住宿餐飲:全程5鑽豪華酒店,舒適整潔;含5早4中,餐飲地道正宗<br>
4. 全程導覽:專業服務型導遊,提供24小時管家式服務,隨時解答疑問<br>
5. 接送服務:24小時貼心接機送機,全程無後顧之憂
<br><br>如果對費用細節有需要詳細了解,可以直接加<span class="guide-name-highlight">笑笑</span>联系方式諮詢:<span class="wechat-id" @click="openLine">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-line"></use></svg> LINE 在線諮詢 ]</span> <span class="wechat-id" @click="openWhatsApp">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-whatsapp"></use></svg> WhatsApp 聯繫 ]</span> <span class="wechat-id" @click="openWeixin">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-wechat"></use></svg> 微信諮詢 ]</span>·「私訊領取:高清版 6 天 5 晚手繪行程圖」,她會免費為你解答,而且還非常的詳細。
</p>
<img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/P9.jpg" alt="蘇杭" />
<p><span class="bold">📝 江南旅遊注意事項(親身總結)</span>
</p>
<p>1️⃣烏鎮西柵下午5點開始亮燈,建議安排好時間,夜景才是精華<br>
2️⃣搖櫓船一定要體驗,晃悠悠盪漾在碧波之上,看兩岸古建築別有一番滋味<br>
3️⃣蘇幫菜口感偏甜,不要一次點多了,怕吃不習慣<br>
4️⃣一定要穿舒適的平底鞋,有很多石板路,怕磨腳<br>
5️⃣買特產建議去當地大型超市,價格透明不會被坑<br>
6️⃣對江南完全不了解沒有做攻略的,建議報一個本地團一起出發,有人照應路上不那麼無聊,安全性也有保障
</p>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image7.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image7.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image7.jpg" alt="蘇杭" /></div>
<div class="expandable-img" @click="toggleExpandImage($event)" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image8.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image8.png"><img class="lazy-image post-img" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image8.jpg" alt="蘇杭" /></div>
<p>
這次6天5晚的上海蘇杭之行,全程只花了不到2000元人民幣,包含了所有景點的門票、酒店住宿、餐食費、包車費用以及24小時接送站服務。真的非常劃算,而且服務更好!要是你跟我一樣,想玩得開心又不想多花冤枉錢,可以考慮找<span
class="guide-name-highlight">笑笑</span>幫忙。他很專業,能根據你的時間和預算定製私家團行程,幫你省錢省心。
</p>
<p>
很多朋友去蘇杭和中國其他城市旅行都想找個靠譜服務好的導遊提前免費咨詢一下,在這裏我給<span class="guide-name-highlight">笑笑</span>打個小廣告哦,親身經驗告訴你<span class="guide-name-highlight">笑笑</span>的服務真的很好,而且價格很實惠。計劃去上海或者蘇杭遊玩的朋友可以添加<span class="guide-name-highlight">笑笑</span>的微信WeChat好友免費咨詢一下!
</p>
<p>提示:可以直接加<span class="guide-name-highlight">笑笑</span>联系方式諮詢:<span class="wechat-id" @click="openLine">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-line"></use></svg> LINE 在線諮詢 ]</span> <span class="wechat-id" @click="openWhatsApp">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-whatsapp"></use></svg> WhatsApp 聯繫 ]</span> <span class="wechat-id" @click="openWeixin">[ <svg class="contact-app-icon" aria-hidden="true"><use href="#icon-contact-wechat"></use></svg> 微信諮詢 ]</span>·「私訊領取:高清版 6 天 5 晚手繪行程圖」
</p>
<p>也可以通過以下二維碼添加導遊微信:</p>
<p class="ewm">
<img class="lazy-image" data-original="" :data-src="guideQrcode" alt="導遊微信二維碼" />
</p>
<div class="quick-contact">
<p>
如果您沒有微信,也可以點擊下方按鈕留言,我們會盡快回覆:
</p>
<button class="message-btn" @click="openMessageForm">
快速留言
</button>
</div>
</div>
<div class="comments-section">
<h3>評論區</h3>
<div class="comment-input">
<input type="text" v-model="commentText" placeholder="說點什麼吧..." ref="commentInput" />
<button @click="handleCommentSubmit">發送</button>
</div>
<div class="comments-list">
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/3.jpg" alt="用戶頭像" />
<span class="comment-author">雅雯</span>
<span class="comment-time">臺北遊客</span>
</div>
<p>
天啊!!我上個月剛跟著<span class="guide-name-highlight">笑笑</span>玩完回來,整個行程真的超級棒的啦~烏鎮的夜景美到我哭出來,完全沒想到大陸的水鄉古鎮可以這麼夢幻😭 而且導遊全程都很有耐心解說,我媽媽腳不好走得慢,他也完全不催,真的很貼心。費用也跟說的一樣透明,沒有任何隱藏消費,推薦給大家!
</p>
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image9.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image9.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image9.png" alt="評論圖片" @click="toggleImageExpand($event)" />
<div class="comment-time">3天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
謝謝雅雯姐的信任!你媽媽走路慢完全沒關係,我們行程都可以彈性調整的,希望你們玩得開心~下次再來找我哦!
</p>
<div class="comment-time">2天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/5.jpg" alt="用戶頭像" />
<span class="guide-author">婷婷愛旅行</span>
</div>
<p>
請問你們幾個人去的呀?我們家四口也在考慮,費用大概怎麼算?
</p>
<div class="comment-time">1天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/3.jpg" alt="用戶頭像" />
<span class="comment-author">雅雯</span>
<span class="comment-time">臺北遊客</span>
</div>
<p>
<span class="at-color">@婷婷愛旅行</span>
我們五個人去的,費用直接加<span class="guide-name-highlight">笑笑</span>微信問她比較快,他會根據人數給你報價,我們當時也是先諮詢再決定的~
</p>
<div class="comment-time">1天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/6.jpg" alt="用戶頭像" />
<span class="comment-author">志明</span>
<span class="comment-time">高雄遊客</span>
</div>
<p>
我是第一次去大陸旅遊,說實話出發前有點緊張,怕語言不通、怕被坑。結果完全多慮了!<span class="guide-name-highlight">笑笑</span>全程陪同,從機場接機開始就感覺很安心。西湖那天天氣超好,坐在遊船上吹著風,看著斷橋殘雪的景色,整個人都放鬆了。烏鎮西柵的夜景我拍了幾百張照片哈哈哈,朋友都說我拍得像明信片一樣😂 下次想帶父母一起去!
</p>
<div class="comment-time">1週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
志明你好!第一次來大陸能玩得這麼開心真的很高興😄 帶父母來的話我可以幫你安排節奏慢一點的行程,長輩玩起來更舒服,歡迎隨時聯絡我!
</p>
<div class="comment-time">6天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/7.jpg" alt="用戶頭像" />
<span class="comment-author">阿蓮</span>
</div>
<p>
這次我們香港一家人去華東,真的超開心!一定要讚讚<span class="guide-name-highlight">笑笑</span>導遊,安排得很周到。最難忘的是在西湖雷峰塔前拍合照(附上全家福圖),塔的建築好氣派,導遊還幫我們抓拍拍得特別好,我們香港人人~都很喜歡!蘇州園林也美得精緻。全程專車專導真的很省心,比自己走方便多了。費用也公道,服務五星級!
</p>
<div class="comment-images-row">
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image10.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image10.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image10.png" alt="評論圖片" @click="toggleImageExpand($event)" />
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image11.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image11.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image11.png" alt="評論圖片" @click="toggleImageExpand($event)" />
</div>
<div class="comment-time">1週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
阿蓮你好!看到你們全家在雷峰塔下的笑容,我也特別有成就感!那張合照拍得真的很温馨。華東的美景四季不同,歡迎下次帶更多朋友再來玩,我再帶你們去吃地道的杭州菜!
</p>
<div class="comment-time">6天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/4.jpg" alt="用戶頭像" />
<span class="comment-author">欣欣向榮去旅行</span>
</div>
<p>
剛剛看完整篇攻略,已經截圖存下來了!請問一下,我們是從香港出發,不知道可不可以安排?另外烏鎮住一晚的話,第二天早上可以繼續逛嗎?感覺一天不夠玩😅
</p>
<div class="comment-time">2週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
香港出發完全可以安排的!我有很多香港客人,通常從深圳或廣州入境再飛上海,我可以幫你規劃最省時省錢的路線。烏鎮住一晚的話第二天早上可以逛東柵,東柵白天人少景美,跟西柵夜景是完全不同的感受,非常值得!有興趣加我微信詳聊吧~
</p>
<div class="comment-time">13天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/5.jpg" alt="用戶頭像" />
<span class="comment-author">陳小姐</span>
<span class="comment-time">台灣遊客</span>
</div>
<p>
走進這片虞美人花海,感覺時間都變慢了。我們在花海中拍的這張合照,很有江南水鄉的韻味。導遊特別細心,全程無購物,價格也很透明。對於我們新加坡人來說,能有這麼地道又省心的深度遊體驗,真的太棒了。強烈推薦!
</p>
<div class="comment-images-row">
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image12.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image12.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image12.png" alt="評論圖片" @click="toggleImageExpand($event)" />
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image13.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image13.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image13.png" alt="評論圖片" @click="toggleImageExpand($event)" />
</div>
<div class="comment-time">2週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
謝謝陳小姐的評價!虞美人花海確實很美,你們喜歡我就高興。歡迎下次帶家人一起來,我再安排更豐富的行程!
</p>
<div class="comment-time">13天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/6.jpg" alt="用戶頭像" />
<span class="comment-author">君君媽咪帶娃遊</span>
</div>
<p>
帶著7歲的小孩和60多歲的婆婆一起去,原本以為老人小孩一起會很累,結果出乎意料的順利!<span class="guide-name-highlight">笑笑</span>很有經驗,知道哪些景點適合老人、哪些孩子會喜歡,行程安排得鬆緊適中。我女兒在烏鎮坐搖櫓船的時候開心得不得了,一直說要再來😂 寒山寺的鐘聲也讓婆婆很感動,說是這輩子最難忘的旅行之一。強烈推薦有老人小孩的家庭!
</p>
<div class="comment-time">3週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
君君媽咪你們一家三代同遊真的太溫馨了!小朋友喜歡搖櫓船我超開心的,下次帶她來還可以體驗做藍印花布,一定更有趣😄
</p>
<div class="comment-time">20天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/7.jpg" alt="用戶頭像" />
<span class="comment-author">珊珊</span>
<span class="comment-time">新竹遊客</span>
</div>
<p>
請問帶小孩去烏鎮安全嗎?水邊會不會危險?我也想帶我家5歲的去
</p>
<div class="comment-time">18天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/3.jpg" alt="用戶頭像" />
<span class="comment-author">阿德</span>
<span class="comment-time">馬來西亞華人</span>
</div>
<p>
我是馬來西亞華人,一直想去江南看看,這次終於成行了!說真的,江南的美超出我的想像,特別是烏鎮,感覺時間在那裡靜止了一樣,走在石板路上,兩邊都是白牆黑瓦,水面倒映著燈光,美到說不出話來。龍井茶園也很棒,現場採茶、炒茶、泡茶一條龍體驗,買了好幾盒回去送親友,大家都說好喝!費用真的很實惠,比我自己訂機票酒店還便宜,服務還更好。
</p>
<div class="comment-time">1個月前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
阿德你好!馬來西亞的朋友來江南,我特別開心!龍井茶你買的那幾盒是今年新茶,品質很好的😄 歡迎下次帶家人一起來,我幫你安排更豐富的行程!
</p>
<div class="comment-time">28天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/4.jpg" alt="用戶頭像" />
<span class="comment-author">文靜</span>
<span class="comment-time">新加坡遊客</span>
</div>
<p>
想問一下,這個行程可以改成七天嗎?我想在杭州多待一天,西湖那邊還有很多地方沒逛完的感覺😅 另外請問酒店是幾人間?我們兩對夫妻一起去,想知道是不是每對都有獨立房間?
</p>
<div class="comment-time">1個月前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
文靜你好!行程完全可以客製化的,加一天在杭州沒問題,我可以幫你加入靈隱寺、南宋御街或者錢塘江觀潮,選擇很多!酒店是每對夫妻一間標準大床房,完全獨立的,隱私有保障。你們四個人一起出遊費用還可以再優惠一些,加我微信詳聊吧!
</p>
<div class="comment-time">29天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/5.jpg" alt="用戶頭像" />
<span class="comment-author">陳先生</span>
</div>
<p>
這次帶全家人去杭州西湖,真的太驚艷了!景色比照片還要美一百倍。特別要感謝我們的華語導遊,不僅解說專業生動,還超會幫忙拍照,抓拍的全家福(如圖)大家都超級滿意!全程專車服務,省去了自己找路的麻煩,這趟私人定制團真的太物超所值了。
</p>
<div class="comment-images-row">
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image14.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image14.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image14.png" alt="評論圖片" @click="toggleImageExpand($event)" />
<img class="comment-image lazy-image" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image15.jpg" data-thumb="<?php echo get_template_directory_uri(); ?>/jn/static/images/thumbs/image15.jpg" data-full="<?php echo get_template_directory_uri(); ?>/jn/static/images/image15.png" alt="評論圖片" @click="toggleImageExpand($event)" />
</div>
<div class="comment-time">1個月前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
謝謝陳先生的讚賞!雷峰塔下的西湖確實別有風味,能幫你們記錄下這美好的全家福我也很高興。歡迎下次帶家人一起來!
</p>
<div class="comment-time">28天前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="<?php echo get_template_directory_uri(); ?>/jn/static/images/6.jpg" alt="用戶頭像" />
<span class="comment-author">淑芬阿姨愛旅遊</span>
</div>
<p>
我今年58歲,跟老伴兩個人去的,本來擔心年紀大了跟不上行程,結果完全沒問題!<span class="guide-name-highlight">笑笑</span>知道我們是中老年人,特別安排了午休時間,走路多的景點也會幫我們找地方坐下來休息。蘇州留園真的太美了,我一直以為只有電視劇裡才有那種庭院,沒想到真實的更漂亮!回來之後跟朋友說,他們都羨慕死了,已經有三個朋友說要跟著去了哈哈!
</p>
<div class="comment-time">6週前</div>
</div>
</div>
<div class="comment">
<div class="comment-content">
<div class="comment-info">
<img class="lazy-image comment-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar"alt="用戶頭像" />
<span class="guide-name-highlight">笑笑</span>
<span class="comment-time">導遊</span>
</div>
<p>
淑芬阿姨太客氣了!你和叔叔都很好相處,帶你們玩我也很開心😊 朋友們要來的話讓他們直接加我微信,我給你們安排一起出發,老朋友同遊更熱鬧!
</p>
<div class="comment-time">5週前</div>
</div>
</div>
</div>
<div class="message-form">
<h4>快速留言</h4>
<form class="contact-form" @submit.prevent="submitForm">
<div class="form-group">
<label for="name">您的稱呼 <span class="required">*</span></label>
<input type="text" id="name" v-model="formData.name" placeholder="請輸入您的稱呼" required />
</div>
<div class="form-group">
<label>聯繫方式 <span class="required">*</span></label>
<div class="contact-options">
<div v-for="option in contactOptions" :key="option.value" class="radio-group"
:class="{ selected: formData.contactType === option.value }"
@click="selectContact(option.value)">
<input type="radio" :id="option.value" name="contact-type" :value="option.value"
v-model="formData.contactType" required />
<label :for="option.value">{{ option.label }}</label>
</div>
</div>
</div>
<div class="form-group" v-if="isLineSelected">
<label for="contact-link" class="contact-label-with-help">
Line鏈接 <span class="required">*</span>
<button type="button" class="line-help-btn" @click="showLineHelp = true">?</button>
</label>
<input type="text" id="contact-link" v-model="formData.number" required placeholder="請輸入Line鏈接" />
<span class="error-message" v-if="phoneError">{{ phoneError }}</span>
</div>
<div class="form-group" v-else>
<label for="contact-number">聯繫號碼 <span class="required">*</span></label>
<input type="tel" id="contact-number" v-model="formData.number" required class="iti-input" />
<span class="error-message" v-if="phoneError">{{ phoneError }}</span>
</div>
<div class="form-group">
<label for="message">留言內容</label>
<textarea id="message" rows="4" v-model="formData.messageContents"
placeholder="請輸入您想諮詢的內容"></textarea>
</div>
<button type="submit" class="submit-btn" :disabled="isSubmitting">{{ isSubmitting ?
'提交中...' : '提交留言'
}}</button>
</form>
</div>
</div>
</article>
</div>
<div class="sidebar">
<div class="sticky-content">
<div class="guide-profile">
<div class="guide-avatar-wrapper">
<img class="lazy-image guide-avatar" data-original="" :data-src="guideAvatar" :src="guideAvatar" alt="導遊頭像" />
<span class="verified-badge">✓</span>
</div>
<h3 class="guide-name">
<span class="guide-name-highlight">{{ guideName }}</span>
<span class="guide-tag">金牌導遊</span>
</h3>
</div>
<div class="contact-section">
<img class="lazy-image qr-code" data-original="" :data-src="guideQrcode" :src="guideQrcode" alt="導遊微信二維碼" style="cursor:zoom-in" @click="openQrCode('wechat')" />
<div class="message-alternative">
<button class="message-btn" @click="openMessageForm">
快速留言
</button>
<p class="message-tip">
如果您沒有微信(WeChat),可以點擊「快速留言」留言,我們會在5分鐘內回覆您
</p>
</div>
</div>
</div>
</div>
</div>
</main>
<footer>
<p>
Copyright 2017 杭州博赢国际旅行社有限公司 | 版權所有 | 聯絡地址:杭州东部国际商务中心 2 幢 1006、1007 、1008室
</p>
<p class="footer-notice">敬告:該内容由平台網友發布版權所有,未經允許,禁止轉載。</p>
</footer>
<div class="modal-overlay" v-if="showMessageForm" @click="showMessageForm = false"></div>
<div class="modal" v-if="showMessageForm">
<div class="modal-content">
<div class="modal-header">
<h4>快速留言</h4>
<button class="close-btn" @click="showMessageForm = false">
×
</button>
</div>
<form class="contact-form" @submit.prevent="submitForm">
<div class="form-group">
<label for="name">您的稱呼 <span class="required">*</span></label>
<input type="text" id="name" v-model="formData.name" placeholder="請輸入您的稱呼" required />
</div>
<div class="form-group">
<label>聯繫方式 <span class="required">*</span></label>
<div class="contact-options">
<div v-for="option in contactOptions" :key="option.value" class="radio-group"
:class="{ selected: formData.contactType === option.value }" @click="selectContact(option.value)">
<input type="radio" :id="option.value" name="contact-type" :value="option.value"
v-model="formData.contactType" required />
<label :for="option.value">{{ option.label }}</label>
</div>
</div>
</div>
<div class="form-group" v-if="isLineSelected">
<label for="contact-link2" class="contact-label-with-help">
Line鏈接 <span class="required">*</span>
<button type="button" class="line-help-btn" @click="showLineHelp = true">?</button>
</label>
<input type="text" id="contact-link2" v-model="formData.number" required placeholder="請輸入Line鏈接" />
<span class="error-message" v-if="phoneError">{{ phoneError }}</span>
</div>
<div class="form-group" v-else>
<label for="contact-number2">聯繫號碼 <span class="required">*</span></label>
<input type="tel" id="contact-number2" v-model="formData.number" required class="iti-input" />
<span class="error-message" v-if="phoneError">{{ phoneError }}</span>
</div>
<div class="form-group">
<label for="message">留言內容</label>
<textarea id="message" rows="4" v-model="formData.messageContents" placeholder="請輸入您想諮詢的內容"></textarea>
</div>
<button type="submit" class="submit-btn" :disabled="isSubmitting">{{ isSubmitting ? '提交中...' :
'提交留言'
}}</button>
</form>
</div>
</div>
<div class="copy-modal" v-if="showCopyModal">
<div class="copy-content">
<button class="close-btn" @click="closeCopyModal">×</button>
<div class="copy-header">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor"
class="bi bi-check-circle-fill" viewBox="0 0 16 16">
<path
d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z" />
</svg>
<h3>微信號已複製</h3>
</div>
<p>微信號:{{ wechatId }}</p>
<p>添加微信好友,詳細了解更多旅遊省錢攻略</p>
<div class="copy-footer">
<button class="secondary-btn" @click="closeCopyModal">
知道了
</button>
<button class="primary-btn" @click="openWeixin">打開微信</button>
</div>
</div>
</div>
<!-- 微信悬浮按钮弹窗 -->
<div class="wechat-modal" v-if="showWechatModal">
<div class="wechat-modal-content">
<button class="close-btn" @click="showWechatModal = false">×</button>
<div class="wechat-modal-header">
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" fill="currentColor" class="bi bi-wechat"
viewBox="0 0 16 16">
<path
d="M11.176 14.429c-2.665 0-4.826-1.8-4.826-4.018 0-2.22 2.159-4.02 4.824-4.02S16 8.191 16 10.411c0 1.21-.65 2.301-1.666 3.036a.324.324 0 0 0-.12.366l.218.81a.616.616 0 0 1 .029.117.166.166 0 0 1-.162.162.177.177 0 0 1-.092-.03l-1.057-.61a.519.519 0 0 0-.256-.074.509.509 0 0 0-.142.021 5.668 5.668 0 0 1-1.576.22ZM9.064 9.542a.647.647 0 1 0 .557-1 .645.645 0 0 0-.646.647.615.615 0 0 0 .09.353Zm3.232.001a.646.646 0 1 0 .546-1 .645.645 0 0 0-.644.644.627.627 0 0 0 .098.356Z" />
<path
d="M0 6.826c0 1.455.781 2.765 2.001 3.656a.385.385 0 0 1 .143.439l-.161.6-.1.373a.499.499 0 0 0-.032.14.192.192 0 0 0 .193.193c.039 0 .077-.01.111-.029l1.268-.733a.622.622 0 0 1 .308-.088c.058 0 .116.009.171.025a6.83 6.83 0 0 0 1.625.26 4.45 4.45 0 0 1-.177-1.251c0-2.936 2.785-5.02 5.824-5.02.05 0 .1 0 .15.002C10.587 3.429 8.392 2 5.796 2 2.596 2 0 4.16 0 6.826Zm4.632-1.555a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Zm3.875 0a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Z" />
</svg>
</div>
<div class="wechat-modal-body">
<h3>微訊號</h3>
<p>微訊號:{{ wechatId }}</p>
</div>
<div class="wechat-modal-footer">
<button class="secondary-btn" @click="copyWechatNumber">
複製微訊號
</button>
<button class="primary-btn" @click="openWeixin">打開微信</button>
</div>
</div>
</div>
<div class="qr-modal" v-if="showQrCode">
<div class="qr-modal-content">
<div class="qr-modal-header">
<div class="guide-info">
<img class="modal-guide-avatar" :src="guideAvatar" alt="導遊頭像" />
<div class="modal-guide-name">
<span class="guide-name-highlight">{{ guideName }}</span>
<span class="guide-tag">金牌導遊</span>
</div>
</div>
<button class="close-btn" @click="closeQrModal">
×
</button>
</div>
<div class="qr-modal-body">
<img class="modal-qr-code" :src="currentQrcode" :alt="currentQrType === 'line' ? 'Line二維碼' : currentQrType === 'whatsapp' ? 'WhatsApp二維碼' : '二維碼'" />
<p v-if="currentQrType === 'line' && configLineId" style="text-align:center;margin-top:8px;color:#666;font-size:14px;">Line ID:{{ configLineId }}</p>
<p v-if="currentQrType === 'whatsapp' && configWhatsappId" style="text-align:center;margin-top:8px;color:#666;font-size:14px;">WhatsApp:{{ configWhatsappId }}</p>
<p v-if="currentQrType === 'wechat' && isMobile" style="text-align:center;margin-top:8px;color:#07c160;font-size:13px;">長按二維碼可識別並添加微信好友</p>
<p v-if="currentQrType === 'wechat' && !isMobile" style="text-align:center;margin-top:8px;color:#999;font-size:13px;">請使用微信掃一掃添加好友</p>
</div>
<div class="qr-modal-footer">
<button class="secondary-btn" @click="handleQrCopy">{{ currentQrType === 'line' ? '複製Line ID' : currentQrType === 'whatsapp' ? '複製WhatsApp號' : '複製微信號' }}</button>
<button v-if="currentQrType !== 'wechat' && currentQrType !== 'line'" class="primary-btn" @click="handleQrAction">{{ currentQrType === 'whatsapp' ? '打開WhatsApp' : '打開Line' }}</button>
</div>
</div>
</div>
<div class="floating-buttons">
<button class="float-btn" @click="openQrCode('wechat')">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wechat"
viewBox="0 0 16 16">
<path
d="M11.176 14.429c-2.665 0-4.826-1.8-4.826-4.018 0-2.22 2.159-4.02 4.824-4.02S16 8.191 16 10.411c0 1.21-.65 2.301-1.666 3.036a.324.324 0 0 0-.12.366l.218.81a.616.616 0 0 1 .029.117.166.166 0 0 1-.162.162.177.177 0 0 1-.092-.03l-1.057-.61a.519.519 0 0 0-.256-.074.509.509 0 0 0-.142.021 5.668 5.668 0 0 1-1.576.22ZM9.064 9.542a.647.647 0 1 0 .557-1 .645.645 0 0 0-.646.647.615.615 0 0 0 .09.353Zm3.232.001a.646.646 0 1 0 .546-1 .645.645 0 0 0-.644.644.627.627 0 0 0 .098.356Z" />
<path
d="M0 6.826c0 1.455.781 2.765 2.001 3.656a.385.385 0 0 1 .143.439l-.161.6-.1.373a.499.499 0 0 0-.032.14.192.192 0 0 0 .193.193c.039 0 .077-.01.111-.029l1.268-.733a.622.622 0 0 1 .308-.088c.058 0 .116.009.171.025a6.83 6.83 0 0 0 1.625.26 4.45 4.45 0 0 1-.177-1.251c0-2.936 2.785-5.02 5.824-5.02.05 0 .1 0 .15.002C10.587 3.429 8.392 2 5.796 2 2.596 2 0 4.16 0 6.826Zm4.632-1.555a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Zm3.875 0a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0Z" />
</svg>
</button>
<button class="float-btn float-btn-line" @click="openQrCode('line')">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 24 24">
<path
d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596a.637.637 0 0 1-.199.031c-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595a.623.623 0 0 1 .194-.033c.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314" />
</svg>
</button>
<button class="float-btn float-btn-whatsapp" @click="openQrCode('whatsapp')">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-whatsapp" viewBox="0 0 16 16">
<path
d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.116.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.116-.198-.012-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.325-.335-.445-.34-.116-.007-.248-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z" />
</svg>
</button>
<button class="float-btn" @click="openMessageForm">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-chat-right-dots-fill" viewBox="0 0 16 16">
<path
d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353V2zM5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" />
</svg>
</button>
<button class="float-btn" v-show="showBackToTop" @click="scrollToTop">
<svg t="1735545688921" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="4288" data-spm-anchor-id="a313x.search_index.0.i1.601c3a813BwzP4" width="64" height="64">
<path
d="M832 165.76H192c-26.24 0-48 21.76-48 48s21.76 48 48 48h640c26.24 0 48-21.76 48-48s-21.76-48-48-48zM551.04 376.96A58.688 58.688 0 0 0 512 360.32c-12.8 0-29.44 7.04-38.4 16L254.08 595.84c-18.56 18.56-18.56 49.28 0 67.84s49.28 18.56 67.84 0l142.08-142.08v348.16c0 26.24 21.76 48 48 48s48-21.76 48-48V521.6l142.08 142.08c9.6 9.6 21.76 14.08 33.92 14.08s24.32-4.48 33.92-14.08c18.56-18.56 18.56-49.28 0-67.84L551.04 376.96z"
p-id="4289"></path>
</svg>
</button>
</div>
<div class="success-modal" v-if="showSuccessModal">
<div class="success-content">
<div class="success-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-chat-right-dots-fill" viewBox="0 0 16 16">
<path
d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353V2zM5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" />
</svg>
</div>
<h3>提交成功</h3>
<p>我們會盡快與您聯繫</p>
<button class="success-btn" @click="showSuccessModal = false">
確定
</button>
</div>
</div>
<div class="alert-modal" v-if="showAlert">
<div class="alert-content">
<p>{{ alertMessage }}</p>
<button @click="showAlert = false">確定</button>
</div>
</div>
<div class="line-help-modal" v-if="showLineHelp" @click.self="showLineHelp = false">
<div class="line-help-content">
<div class="modal-header">
<h4>Line鏈接獲取示例</h4>
<button class="close-btn" @click="showLineHelp = false">×</button>
</div>
<img class="line-help-image" src="<?php echo get_template_directory_uri(); ?>/jn/static/images/line-example.jpg" alt="Line鏈接獲取示例" />
<p class="line-help-text">請在Line軟體中,點擊二維碼下方的「複製鏈接」,再將鏈接貼到此處提交。</p>
</div>
</div>
<!-- 注册弹窗 -->
<div class="comment-register-modal" v-if="showCommentRegister">
<div class="modal-content">
<div class="modal-header">
<h4>請完成註冊</h4>
<button class="close-btn" @click="showCommentRegister = false">
×
</button>
</div>
<form class="register-form" @submit.prevent="submitCommentRegister">
<div class="form-group">
<label>聯繫方式 <span class="required">*</span></label>
<div class="contact-options">
<div v-for="option in contactOptions" :key="option.value" class="radio-group"
:class="{ selected: commentRegisterData.contact === option.value }"
@click="selectCommentContact(option.value)">
<input type="radio" :id="'comment-' + option.value" name="comment-contact-type" :value="option.value"
v-model="commentRegisterData.contact" required />
<label :for="'comment-' + option.value">{{ option.label }}</label>
</div>
</div>
</div>
<div class="form-group">
<label for="comment-contact-number">聯繫號碼 <span class="required">*</span></label>
<input type="text" id="comment-contact-number" v-model="commentRegisterData.number" required />
<span class="error-message" v-if="commentPhoneError">{{ commentPhoneError }}</span>
</div>
<button type="submit" class="submit-btn">提交</button>
</form>
</div>
</div>
</div>
<script>
const { createApp, ref, onMounted, nextTick, watch, computed } = Vue;
createApp({
setup() {
const showMessageForm = ref(false);
const isSubmitting = ref(false);
const formData = ref({
name: "",
contactType: "",
number: "",
messageContents: "",
url: window.location.href.split('?')[0],
sysAreaId: hzbyGuideConfig.address || kefuData[1].address,
customerServiceId: hzbyGuideConfig.customerServiceId || kefuData[1].customerServiceId,
officeId: hzbyGuideConfig.office || kefuData[1].office
});
const wechatId = hzbyGuideConfig.weChat || kefuData[1].weChat;
const showCopyModal = ref(false);
const showWechatModal = ref(false);
const countdown = ref(3);
const fallbackCopy = (text) => {
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.cssText = 'position:fixed;left:-9999px;top:-9999px;opacity:0';
document.body.appendChild(textarea);
textarea.select();
textarea.setSelectionRange(0, textarea.value.length);
let ok = false;
try { ok = document.execCommand('copy'); } catch (e) {}
document.body.removeChild(textarea);
return ok;
};
const doCopy = async () => {
try {
await navigator.clipboard.writeText(wechatId);
} catch (e) {
fallbackCopy(wechatId);
}
};
const copyWechat = async () => {
await doCopy();
showCopyModal.value = true;
};
const copyWechatNumber = async () => {
await doCopy();
showCopyModal.value = true;
showWechatModal.value = false;
};
const saveQrCode = () => {
const qrImg = document.querySelector('.modal-qr-code');
if (!qrImg || !qrImg.src) {
alert('無法獲取二維碼圖片');
return;
}
const link = document.createElement('a');
link.href = qrImg.src;
link.download = '導遊微信二維碼.png';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
const closeCopyModal = () => {
showCopyModal.value = false;
};
const isMobile = ref(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
const openWeixin = () => {
// 微信已封禁唤起"添加好友"页的 URL scheme,无法直接跳转添加好友。
// 统一弹出二维码:手机端长按二维码可识别并添加微信好友,
// 桌面端可扫码添加。
openQrCode('wechat');
};
const openLine = () => {
openQrCode('line');
};
const openWhatsApp = () => {
const phone = hzbyGuideConfig.whatsappId || (hzbyGuideConfig.tel || kefuData[1].tel || '');
const cleaned = phone.replace(/[\s+]/g, '');
window.open('https://wa.me/' + cleaned, '_blank');
};
const handleQrAction = () => {
if (currentQrType.value === 'line') {
openLine();
} else if (currentQrType.value === 'whatsapp') {
openWhatsApp();
} else {
openWeixin();
}
};
const contactOptions = [
{ value: 1, label: "WeChat" },
{ value: 2, label: "Line" },
{ value: 3, label: "WhatsApp" },
{ value: 4, label: "Telephone" },
];
const showLineHelp = ref(false);
const isLineSelected = computed(() => Number(formData.value.contactType) === 2);
const phoneError = ref("");
let iti = null;
const initIntlInput = (selector) => {
const input = document.querySelector(selector);
if (!input || isLineSelected.value) return;
iti = window.intlTelInput(input, {
utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/utils.js",
preferredCountries: ["cn", "mo", "hk", "tw", "sg", "my"],
separateDialCode: true,
initialCountry: "auto",
geoIpLookup: function (success, failure) {
axios.get("https://ipinfo.io")
.then(res => success(res.data.country))
.catch(() => success("cn"));
},
});
};
const selectContact = (value) => {
formData.value.contactType = value;
phoneError.value = "";
if (Number(value) === 2 && iti) {
iti.destroy();
iti = null;
}
};
watch(isLineSelected, (isLine) => {
if (isLine) return;
nextTick(() => {
const selector = showMessageForm.value ? "#contact-number2" : "#contact-number";
initIntlInput(selector);
});
});
const validatePhone = () => {
const val = (formData.value.number || "").trim();
if (!val) {
phoneError.value = "請輸入聯繫號碼";
return false;
}
phoneError.value = "";
return true;
};
const submitForm = () => {
if (isSubmitting.value) return;
isSubmitting.value = true;
if (!validatePhone()) {
isSubmitting.value = false;
return;
}
if (!isLineSelected.value && iti) {
formData.value.number = iti.getNumber();
}
const apiUrl = "/wp-json/quick-message/v1/submit";
const payload = { ...formData.value };
axios.post("https://api.cernty.com/promo-monitor/googleForm/add", payload).catch(err => console.error("External API Error:", err));
axios.post(apiUrl, payload)
.then(() => {
showSuccessModal.value = true;
formData.value = {
name: "", contactType: "", number: "", messageContents: "",
url: window.location.href.split('?')[0],
sysAreaId: hzbyGuideConfig.address || kefuData[1].address,
customerServiceId: hzbyGuideConfig.customerServiceId || kefuData[1].customerServiceId,
officeId: hzbyGuideConfig.office || kefuData[1].office
};
showMessageForm.value = false;
if (iti) iti.setNumber("");
})
.catch(err => console.error("API Error:", err))
.finally(() => isSubmitting.value = false);
};
const guideName = hzbyGuideConfig.name || kefuData[1].name;
const guideAvatar = hzbyGuideConfig.avatar || kefuData[1].avatar;
const guideQrcode = hzbyGuideConfig.qrcode || kefuData[1].qrcode;
const lineQrcode = hzbyGuideConfig.lineQrcode || '';
const whatsappQrcode = hzbyGuideConfig.whatsappQrcode || '';
const configLineId = hzbyGuideConfig.lineId || '';
const configWhatsappId = hzbyGuideConfig.whatsappId || '';
const showQrCode = ref(false);
const currentQrcode = ref(guideQrcode);
const currentQrType = ref('wechat');
const showSuccessModal = ref(false);
const showBackToTop = ref(false);
const openQrCode = (type) => {
currentQrType.value = type;
if (type === 'line') {
currentQrcode.value = lineQrcode || guideQrcode;
} else if (type === 'whatsapp') {
currentQrcode.value = whatsappQrcode || guideQrcode;
} else {
currentQrcode.value = guideQrcode;
}
showQrCode.value = true;
};
const closeQrModal = () => {
showQrCode.value = false;
};
const handleQrCopy = async () => {
let text = '';
if (currentQrType.value === 'line') {
text = hzbyGuideConfig.lineId || hzbyGuideConfig.weChat || kefuData[1].weChat;
} else if (currentQrType.value === 'whatsapp') {
text = hzbyGuideConfig.whatsappId || hzbyGuideConfig.weChat || kefuData[1].weChat;
} else {
text = wechatId;
}
try {
await navigator.clipboard.writeText(text);
showCopyModal.value = true;
} catch (err) {
alert("複製失敗,請手動複製:" + text);
}
};
onMounted(() => {
initIntlInput("#contact-number");
window.addEventListener("scroll", () => {
showBackToTop.value = window.scrollY > 500;
}, { passive: true });
});
const scrollToTop = () => {
window.scrollTo({ top: 0, behavior: "smooth" });
};
const showAlert = ref(false);
const alertMessage = ref("");
const showCommentRegister = ref(false);
const commentRegisterData = ref({ contact: "", number: "" });
const commentPhoneError = ref("");
const commentText = ref("");
const isRegistered = ref(false);
const selectCommentContact = (value) => commentRegisterData.value.contact = value;
const handleCommentSubmit = () => {
if (!commentText.value.trim()) {
alertMessage.value = "請先輸入評論內容";
showAlert.value = true;
return;
}
if (!isRegistered.value) {
showCommentRegister.value = true;
nextTick(() => initIntlInput("#comment-contact-number"));
return;
}
alertMessage.value = "評論提交成功,等待審核";
showAlert.value = true;
commentText.value = "";
};
const lazyLoadImages = () => {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
const wrapper = img.closest('.expandable-img');
const thumbSrc = img.getAttribute('data-original') || img.getAttribute('data-src');
const fullSrc = wrapper ? wrapper.getAttribute('data-full') : null;
if (thumbSrc && !img.src) {
img.src = thumbSrc;
}
if (fullSrc && !img.dataset.hdLoaded) {
const hd = new Image();
hd.onload = () => {
img.src = fullSrc;
img.dataset.hdLoaded = 'true';
img.classList.add('loaded');
};
hd.src = fullSrc;
}
img.classList.add('loaded');
observer.unobserve(img);
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.lazy-image').forEach(img => {
if (img.src && img.complete && img.naturalWidth > 0) {
img.classList.add('loaded');
} else {
observer.observe(img);
}
});
};
onMounted(() => {
lazyLoadImages();
window.addEventListener('resize', lazyLoadImages);
});
const toggleImageExpand = (event) => {
const img = event.target;
if (img.classList.contains('expanded')) {
img.classList.remove('expanded');
img.src = img.getAttribute('data-thumb');
} else {
img.classList.add('expanded');
img.src = img.getAttribute('data-full');
}
};
const toggleExpandImage = (event) => {
const wrapper = event.currentTarget;
const img = wrapper.querySelector('img');
if (!img) return;
if (img.dataset.hdLoaded === 'true') return;
if (wrapper.classList.contains('expanded')) {
wrapper.classList.remove('expanded');
const thumb = wrapper.getAttribute('data-thumb');
if (thumb) img.src = thumb;
} else {
wrapper.classList.add('expanded');
const full = wrapper.getAttribute('data-full');
if (full) img.src = full;
}
};
const openMessageForm = () => {
showMessageForm.value = true;
nextTick(() => {
if (!isLineSelected.value) initIntlInput("#contact-number2");
});
};
return {
showMessageForm, formData, contactOptions, selectContact, submitForm,
wechatId, showCopyModal, showWechatModal, countdown, copyWechat, copyWechatNumber, guideName, guideAvatar,
guideQrcode, showQrCode, currentQrcode, openQrCode, closeQrModal, handleQrCopy, showSuccessModal, scrollToTop, showBackToTop,
showAlert, alertMessage, showCommentRegister, commentRegisterData,
selectCommentContact, commentText, isRegistered, handleCommentSubmit,
phoneError, validatePhone, openMessageForm, closeCopyModal, openWeixin,
isSubmitting, saveQrCode, isLineSelected, showLineHelp, lazyLoadImages,
toggleImageExpand, toggleExpandImage,
openLine, openWhatsApp, handleQrAction, currentQrType, configLineId, configWhatsappId, isMobile
};
},
}).mount("#app");
(function () {
const saveScrollPosition = () => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
sessionStorage.setItem('scrollPosition', scrollTop);
};
window.addEventListener('beforeunload', saveScrollPosition);
setTimeout(() => {
const savedPosition = sessionStorage.getItem('scrollPosition');
if (savedPosition) {
window.scrollTo({ top: parseInt(savedPosition, 10), behavior: 'instant' });
}
}, 800);
})();
</script>
</body>
</html>