feat: update routing to use localePath for navigation across various components and pages

This commit is contained in:
yuanshan 2026-02-02 15:14:24 +08:00
parent 0cfdf1604f
commit e59c69c9ca
24 changed files with 224 additions and 187 deletions

View File

@ -171,7 +171,7 @@ node .output/server/index.mjs 服务器运行
## 必应搜索 ## 必应搜索
<https://www.bing.com/indexnow?url=https://www.fiee.com/product.html&key=45b9e7ac255b4e0bbd7e49d8d10a043b> <https://www.bing.com/indexnow?url=https://www.fiee.com/&key=45b9e7ac255b4e0bbd7e49d8d10a043b>
## 📝 License ## 📝 License

View File

@ -14,6 +14,7 @@ import { showToast } from "vant";
export const useAuth = createGlobalState(() => { export const useAuth = createGlobalState(() => {
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
// Use Nuxt useCookie for SSR compatibility // Use Nuxt useCookie for SSR compatibility
const token = useCookie("token", { default: () => "" }); const token = useCookie("token", { default: () => "" });
@ -52,10 +53,12 @@ export const useAuth = createGlobalState(() => {
const res = await voteAPI({ workUid: workUid.value }); const res = await voteAPI({ workUid: workUid.value });
if (res.status === 0) { if (res.status === 0) {
showToast("投票成功"); showToast("投票成功");
router.push({ router.push(
localePath({
path: "/result", path: "/result",
query: { type: "hasVoted" }, query: { type: "hasVoted" },
}); })
);
} }
}; };
@ -145,10 +148,12 @@ export const useAuth = createGlobalState(() => {
const res = await competitionApply(formData.value); const res = await competitionApply(formData.value);
if (res.status === 0) { if (res.status === 0) {
showToast("报名成功"); showToast("报名成功");
router.push({ router.push(
localePath({
path: "/result", path: "/result",
query: { type: "success" }, query: { type: "success" },
}); })
);
} }
}; };
@ -163,10 +168,10 @@ export const useAuth = createGlobalState(() => {
if (res.data.status === 1) { if (res.data.status === 1) {
showToast("您已经报名"); showToast("您已经报名");
await getDetail(); await getDetail();
router.push("/details"); router.push(localePath("/details"));
} else { } else {
showToast("登录成功"); showToast("登录成功");
router.push("/signup"); router.push(localePath("/signup"));
} }
} }
}; };

View File

@ -15,17 +15,11 @@
<script setup> <script setup>
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
// //
const handleLink = (link) => { const handleLink = (link) => {
// if (link === "privacyPolicy") { router.push(localePath(link));
// window.open(privacyPolicy, "_blank");
// } else if (link === "termsOfUse") {
// window.open(termsOfUse, "_blank");
// } else if (link === "siteMap") {
// window.open(siteMap, "_blank");
// }
router.push(link);
}; };
</script> </script>

View File

@ -3,8 +3,12 @@
<div class="custom-footer"> <div class="custom-footer">
<div class="custom-footer-box"> <div class="custom-footer-box">
<div class="footer-links"> <div class="footer-links">
<span @click="handleLink('privacyPolicy')">{{ $t("footer.privacy_policy") }}</span> <span @click="handleLink('privacyPolicy')">{{
<span @click="handleLink('termsOfUse')">{{ $t("footer.terms_of_use") }}</span> $t("footer.privacy_policy")
}}</span>
<span @click="handleLink('termsOfUse')">{{
$t("footer.terms_of_use")
}}</span>
<span @click="handleLink('siteMap')">{{ $t("footer.site_map") }}</span> <span @click="handleLink('siteMap')">{{ $t("footer.site_map") }}</span>
</div> </div>
<span>&copy; 2025 FiEEHKLimited. All Rights Reserved.</span> <span>&copy; 2025 FiEEHKLimited. All Rights Reserved.</span>
@ -14,18 +18,12 @@
<script setup> <script setup>
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const localePath = useLocalePath();
const router = useRouter(); const router = useRouter();
// //
const handleLink = (link) => { const handleLink = (link) => {
// if (link === "privacyPolicy") { router.push(localePath(link));
// window.open(privacyPolicy, "_blank");
// } else if (link === "termsOfUse") {
// window.open(termsOfUse, "_blank");
// } else if (link === "siteMap") {
// window.open(siteMap, "_blank");
// }
router.push(link);
}; };
</script> </script>

View File

@ -17,17 +17,11 @@
<script setup> <script setup>
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
// //
const handleLink = (link) => { const handleLink = (link) => {
// if (link === "privacyPolicy") { router.push(localePath(link));
// window.open(privacyPolicy, "_blank");
// } else if (link === "termsOfUse") {
// window.open(termsOfUse, "_blank");
// } else if (link === "siteMap") {
// window.open(siteMap, "_blank");
// }
router.push(link);
}; };
</script> </script>

View File

@ -13,17 +13,11 @@
<script setup> <script setup>
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
// //
const handleLink = (link) => { const handleLink = (link) => {
// if (link === "privacyPolicy") { router.push(localePath(link));
// window.open(privacyPolicy, "_blank");
// } else if (link === "termsOfUse") {
// window.open(termsOfUse, "_blank");
// } else if (link === "siteMap") {
// window.open(siteMap, "_blank");
// }
router.push(link);
}; };
</script> </script>

View File

@ -119,7 +119,7 @@ const closeLanguagePicker = () => {
const handleSelectLanguage = (lang) => { const handleSelectLanguage = (lang) => {
setLocale(lang); setLocale(lang);
closeLanguagePicker(); closeLanguagePicker();
selectedLanguage.value = lang; // selectedLanguage.value = lang; // setLocale
}; };
// //

View File

@ -41,10 +41,8 @@ export function useLanguage() {
// 切换语言的方法 // 切换语言的方法
const changeLanguage = (lang) => { const changeLanguage = (lang) => {
if (process.client) { if (process.client) {
locale.value = lang; const { setLocale } = useI18n();
currentLanguage.value = lang; setLocale(lang);
localStorage.setItem('language', lang);
window.location.reload();
} }
}; };

View File

@ -129,6 +129,7 @@ import dayjs from "dayjs";
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
import pdfFile from "@/assets/image/icon/icon-pdf.png"; import pdfFile from "@/assets/image/icon/icon-pdf.png";
import wordFile from "@/assets/image/icon/icon-word.png"; import wordFile from "@/assets/image/icon/icon-word.png";
@ -337,12 +338,14 @@ const columns = [
}, },
onClick: (e) => { onClick: (e) => {
e.preventDefault(); e.preventDefault();
router.push({ router.push(
localePath({
path: "/secfilingsdetail", path: "/secfilingsdetail",
query: { query: {
filingKey: row.filingKey, filingKey: row.filingKey,
}, },
}); })
);
}, },
onMouseover: (e) => { onMouseover: (e) => {
e.target.style.textDecoration = "underline"; e.target.style.textDecoration = "underline";

View File

@ -129,6 +129,7 @@ import dayjs from "dayjs";
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
import pdfFile from "@/assets/image/icon/icon-pdf.png"; import pdfFile from "@/assets/image/icon/icon-pdf.png";
import wordFile from "@/assets/image/icon/icon-word.png"; import wordFile from "@/assets/image/icon/icon-word.png";
@ -337,12 +338,14 @@ const columns = [
}, },
onClick: (e) => { onClick: (e) => {
e.preventDefault(); e.preventDefault();
router.push({ router.push(
localePath({
path: "/secfilingsdetail", path: "/secfilingsdetail",
query: { query: {
filingKey: row.filingKey, filingKey: row.filingKey,
}, },
}); })
);
}, },
onMouseover: (e) => { onMouseover: (e) => {
e.target.style.textDecoration = "underline"; e.target.style.textDecoration = "underline";

View File

@ -130,6 +130,7 @@ import dayjs from "dayjs";
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
import pdfFile from "@/assets/image/icon/icon-pdf.png"; import pdfFile from "@/assets/image/icon/icon-pdf.png";
import wordFile from "@/assets/image/icon/icon-word.png"; import wordFile from "@/assets/image/icon/icon-word.png";
@ -338,12 +339,14 @@ const columns = [
}, },
onClick: (e) => { onClick: (e) => {
e.preventDefault(); e.preventDefault();
router.push({ router.push(
localePath({
path: "/secfilingsdetail", path: "/secfilingsdetail",
query: { query: {
filingKey: row.filingKey, filingKey: row.filingKey,
}, },
}); })
);
}, },
onMouseover: (e) => { onMouseover: (e) => {
e.target.style.textDecoration = "underline"; e.target.style.textDecoration = "underline";

View File

@ -129,6 +129,7 @@ import dayjs from "dayjs";
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
import pdfFile from "@/assets/image/icon/icon-pdf.png"; import pdfFile from "@/assets/image/icon/icon-pdf.png";
import wordFile from "@/assets/image/icon/icon-word.png"; import wordFile from "@/assets/image/icon/icon-word.png";
@ -337,12 +338,14 @@ const columns = [
}, },
onClick: (e) => { onClick: (e) => {
e.preventDefault(); e.preventDefault();
router.push({ router.push(
localePath({
path: "/secfilingsdetail", path: "/secfilingsdetail",
query: { query: {
filingKey: row.filingKey, filingKey: row.filingKey,
}, },
}); })
);
}, },
onMouseover: (e) => { onMouseover: (e) => {
e.target.style.textDecoration = "underline"; e.target.style.textDecoration = "underline";

View File

@ -19,22 +19,22 @@
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/companyoverview')"> <li @click="router.push(localePath('/companyoverview'))">
{{ t("site_map.sections.corporate.links.company_overview") }} {{ t("site_map.sections.corporate.links.company_overview") }}
</li> </li>
<li @click="router.push('/businessservices')"> <li @click="router.push(localePath('/businessservices'))">
{{ t("site_map.sections.corporate.links.business_introduction") }} {{ t("site_map.sections.corporate.links.business_introduction") }}
</li> </li>
<li @click="router.push('/manage')"> <li @click="router.push(localePath('/manage'))">
{{ t("site_map.sections.corporate.links.management") }} {{ t("site_map.sections.corporate.links.management") }}
</li> </li>
<li @click="router.push('/boarddirectors')"> <li @click="router.push(localePath('/boarddirectors'))">
{{ t("site_map.sections.corporate.links.board_of_directors") }} {{ t("site_map.sections.corporate.links.board_of_directors") }}
</li> </li>
<li @click="router.push('/committeeappointment')"> <li @click="router.push(localePath('/committeeappointment'))">
{{ t("site_map.sections.corporate.links.committee_appointments") }} {{ t("site_map.sections.corporate.links.committee_appointments") }}
</li> </li>
<li @click="router.push('/govern')"> <li @click="router.push(localePath('/govern'))">
{{ t("site_map.sections.corporate.links.governance") }} {{ t("site_map.sections.corporate.links.governance") }}
</li> </li>
</ul> </ul>
@ -50,13 +50,13 @@
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/secfilings')"> <li @click="router.push(localePath('/secfilings'))">
{{ t("site_map.sections.financial.links.sec_filings") }} {{ t("site_map.sections.financial.links.sec_filings") }}
</li> </li>
<li @click="router.push('/annualreports')"> <li @click="router.push(localePath('/annualreports'))">
{{ t("site_map.sections.financial.links.annual_reports") }} {{ t("site_map.sections.financial.links.annual_reports") }}
</li> </li>
<li @click="router.push('/quarterlyreports')"> <li @click="router.push(localePath('/quarterlyreports'))">
{{ t("site_map.sections.financial.links.quarterly_reports") }} {{ t("site_map.sections.financial.links.quarterly_reports") }}
</li> </li>
</ul> </ul>
@ -70,10 +70,10 @@
<h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/stock-quote')"> <li @click="router.push(localePath('/stock-quote'))">
{{ t("site_map.sections.stock.links.stock_quote") }} {{ t("site_map.sections.stock.links.stock_quote") }}
</li> </li>
<li @click="router.push('/historic-stock')"> <li @click="router.push(localePath('/historic-stock'))">
{{ t("site_map.sections.stock.links.historic_stock_price") }} {{ t("site_map.sections.stock.links.historic_stock_price") }}
</li> </li>
</ul> </ul>
@ -87,10 +87,10 @@
<h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/press-releases')"> <li @click="router.push(localePath('/press-releases'))">
{{ t("site_map.sections.news.links.press_releases") }} {{ t("site_map.sections.news.links.press_releases") }}
</li> </li>
<li @click="router.push('/events-calendar')"> <li @click="router.push(localePath('/events-calendar'))">
{{ t("site_map.sections.news.links.events_calendar") }} {{ t("site_map.sections.news.links.events_calendar") }}
</li> </li>
</ul> </ul>
@ -104,10 +104,10 @@
<h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/contacts')"> <li @click="router.push(localePath('/contacts'))">
{{ t("site_map.sections.investor.links.contacts") }} {{ t("site_map.sections.investor.links.contacts") }}
</li> </li>
<li @click="router.push('/email-alerts')"> <li @click="router.push(localePath('/email-alerts'))">
{{ t("site_map.sections.investor.links.email_alerts") }} {{ t("site_map.sections.investor.links.email_alerts") }}
</li> </li>
</ul> </ul>
@ -121,6 +121,7 @@ import { onMounted, ref, onUnmounted } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
</script> </script>

View File

@ -4,6 +4,7 @@ import { onUnmounted, ref, watch, onMounted, computed } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
</script> </script>
@ -28,22 +29,22 @@ const { t, locale } = useI18n();
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/companyoverview')"> <li @click="router.push(localePath('/companyoverview'))">
{{ t("site_map.sections.corporate.links.company_overview") }} {{ t("site_map.sections.corporate.links.company_overview") }}
</li> </li>
<li @click="router.push('/businessservices')"> <li @click="router.push(localePath('/businessservices'))">
{{ t("site_map.sections.corporate.links.business_introduction") }} {{ t("site_map.sections.corporate.links.business_introduction") }}
</li> </li>
<li @click="router.push('/manage')"> <li @click="router.push(localePath('/manage'))">
{{ t("site_map.sections.corporate.links.management") }} {{ t("site_map.sections.corporate.links.management") }}
</li> </li>
<li @click="router.push('/boarddirectors')"> <li @click="router.push(localePath('/boarddirectors'))">
{{ t("site_map.sections.corporate.links.board_of_directors") }} {{ t("site_map.sections.corporate.links.board_of_directors") }}
</li> </li>
<li @click="router.push('/committeeappointment')"> <li @click="router.push(localePath('/committeeappointment'))">
{{ t("site_map.sections.corporate.links.committee_appointments") }} {{ t("site_map.sections.corporate.links.committee_appointments") }}
</li> </li>
<li @click="router.push('/govern')"> <li @click="router.push(localePath('/govern'))">
{{ t("site_map.sections.corporate.links.governance") }} {{ t("site_map.sections.corporate.links.governance") }}
</li> </li>
</ul> </ul>
@ -59,13 +60,13 @@ const { t, locale } = useI18n();
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/secfilings')"> <li @click="router.push(localePath('/secfilings'))">
{{ t("site_map.sections.financial.links.sec_filings") }} {{ t("site_map.sections.financial.links.sec_filings") }}
</li> </li>
<li @click="router.push('/annualreports')"> <li @click="router.push(localePath('/annualreports'))">
{{ t("site_map.sections.financial.links.annual_reports") }} {{ t("site_map.sections.financial.links.annual_reports") }}
</li> </li>
<li @click="router.push('/quarterlyreports')"> <li @click="router.push(localePath('/quarterlyreports'))">
{{ t("site_map.sections.financial.links.quarterly_reports") }} {{ t("site_map.sections.financial.links.quarterly_reports") }}
</li> </li>
</ul> </ul>
@ -79,10 +80,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/stock-quote')"> <li @click="router.push(localePath('/stock-quote'))">
{{ t("site_map.sections.stock.links.stock_quote") }} {{ t("site_map.sections.stock.links.stock_quote") }}
</li> </li>
<li @click="router.push('/historic-stock')"> <li @click="router.push(localePath('/historic-stock'))">
{{ t("site_map.sections.stock.links.historic_stock_price") }} {{ t("site_map.sections.stock.links.historic_stock_price") }}
</li> </li>
</ul> </ul>
@ -96,10 +97,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/press-releases')"> <li @click="router.push(localePath('/press-releases'))">
{{ t("site_map.sections.news.links.press_releases") }} {{ t("site_map.sections.news.links.press_releases") }}
</li> </li>
<li @click="router.push('/events-calendar')"> <li @click="router.push(localePath('/events-calendar'))">
{{ t("site_map.sections.news.links.events_calendar") }} {{ t("site_map.sections.news.links.events_calendar") }}
</li> </li>
</ul> </ul>
@ -113,10 +114,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/contacts')"> <li @click="router.push(localePath('/contacts'))">
{{ t("site_map.sections.investor.links.contacts") }} {{ t("site_map.sections.investor.links.contacts") }}
</li> </li>
<li @click="router.push('/email-alerts')"> <li @click="router.push(localePath('/email-alerts'))">
{{ t("site_map.sections.investor.links.email_alerts") }} {{ t("site_map.sections.investor.links.email_alerts") }}
</li> </li>
</ul> </ul>

View File

@ -4,6 +4,7 @@ import { onUnmounted, ref, watch, onMounted, computed } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
</script> </script>
@ -30,22 +31,22 @@ const { t, locale } = useI18n();
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/companyoverview')"> <li @click="router.push(localePath('/companyoverview'))">
{{ t("site_map.sections.corporate.links.company_overview") }} {{ t("site_map.sections.corporate.links.company_overview") }}
</li> </li>
<li @click="router.push('/businessservices')"> <li @click="router.push(localePath('/businessservices'))">
{{ t("site_map.sections.corporate.links.business_introduction") }} {{ t("site_map.sections.corporate.links.business_introduction") }}
</li> </li>
<li @click="router.push('/manage')"> <li @click="router.push(localePath('/manage'))">
{{ t("site_map.sections.corporate.links.management") }} {{ t("site_map.sections.corporate.links.management") }}
</li> </li>
<li @click="router.push('/boarddirectors')"> <li @click="router.push(localePath('/boarddirectors'))">
{{ t("site_map.sections.corporate.links.board_of_directors") }} {{ t("site_map.sections.corporate.links.board_of_directors") }}
</li> </li>
<li @click="router.push('/committeeappointment')"> <li @click="router.push(localePath('/committeeappointment'))">
{{ t("site_map.sections.corporate.links.committee_appointments") }} {{ t("site_map.sections.corporate.links.committee_appointments") }}
</li> </li>
<li @click="router.push('/govern')"> <li @click="router.push(localePath('/govern'))">
{{ t("site_map.sections.corporate.links.governance") }} {{ t("site_map.sections.corporate.links.governance") }}
</li> </li>
</ul> </ul>
@ -61,13 +62,13 @@ const { t, locale } = useI18n();
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/secfilings')"> <li @click="router.push(localePath('/secfilings'))">
{{ t("site_map.sections.financial.links.sec_filings") }} {{ t("site_map.sections.financial.links.sec_filings") }}
</li> </li>
<li @click="router.push('/annualreports')"> <li @click="router.push(localePath('/annualreports'))">
{{ t("site_map.sections.financial.links.annual_reports") }} {{ t("site_map.sections.financial.links.annual_reports") }}
</li> </li>
<li @click="router.push('/quarterlyreports')"> <li @click="router.push(localePath('/quarterlyreports'))">
{{ t("site_map.sections.financial.links.quarterly_reports") }} {{ t("site_map.sections.financial.links.quarterly_reports") }}
</li> </li>
</ul> </ul>
@ -81,10 +82,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/stock-quote')"> <li @click="router.push(localePath('/stock-quote'))">
{{ t("site_map.sections.stock.links.stock_quote") }} {{ t("site_map.sections.stock.links.stock_quote") }}
</li> </li>
<li @click="router.push('/historic-stock')"> <li @click="router.push(localePath('/historic-stock'))">
{{ t("site_map.sections.stock.links.historic_stock_price") }} {{ t("site_map.sections.stock.links.historic_stock_price") }}
</li> </li>
</ul> </ul>
@ -98,10 +99,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/press-releases')"> <li @click="router.push(localePath('/press-releases'))">
{{ t("site_map.sections.news.links.press_releases") }} {{ t("site_map.sections.news.links.press_releases") }}
</li> </li>
<li @click="router.push('/events-calendar')"> <li @click="router.push(localePath('/events-calendar'))">
{{ t("site_map.sections.news.links.events_calendar") }} {{ t("site_map.sections.news.links.events_calendar") }}
</li> </li>
</ul> </ul>
@ -115,10 +116,10 @@ const { t, locale } = useI18n();
<h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/contacts')"> <li @click="router.push(localePath('/contacts'))">
{{ t("site_map.sections.investor.links.contacts") }} {{ t("site_map.sections.investor.links.contacts") }}
</li> </li>
<li @click="router.push('/email-alerts')"> <li @click="router.push(localePath('/email-alerts'))">
{{ t("site_map.sections.investor.links.email_alerts") }} {{ t("site_map.sections.investor.links.email_alerts") }}
</li> </li>
</ul> </ul>

View File

@ -19,22 +19,22 @@
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/companyoverview')"> <li @click="router.push(localePath('/companyoverview'))">
{{ t("site_map.sections.corporate.links.company_overview") }} {{ t("site_map.sections.corporate.links.company_overview") }}
</li> </li>
<li @click="router.push('/businessservices')"> <li @click="router.push(localePath('/businessservices'))">
{{ t("site_map.sections.corporate.links.business_introduction") }} {{ t("site_map.sections.corporate.links.business_introduction") }}
</li> </li>
<li @click="router.push('/manage')"> <li @click="router.push(localePath('/manage'))">
{{ t("site_map.sections.corporate.links.management") }} {{ t("site_map.sections.corporate.links.management") }}
</li> </li>
<li @click="router.push('/boarddirectors')"> <li @click="router.push(localePath('/boarddirectors'))">
{{ t("site_map.sections.corporate.links.board_of_directors") }} {{ t("site_map.sections.corporate.links.board_of_directors") }}
</li> </li>
<li @click="router.push('/committeeappointment')"> <li @click="router.push(localePath('/committeeappointment'))">
{{ t("site_map.sections.corporate.links.committee_appointments") }} {{ t("site_map.sections.corporate.links.committee_appointments") }}
</li> </li>
<li @click="router.push('/govern')"> <li @click="router.push(localePath('/govern'))">
{{ t("site_map.sections.corporate.links.governance") }} {{ t("site_map.sections.corporate.links.governance") }}
</li> </li>
</ul> </ul>
@ -50,13 +50,13 @@
</h3> </h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/secfilings')"> <li @click="router.push(localePath('/secfilings'))">
{{ t("site_map.sections.financial.links.sec_filings") }} {{ t("site_map.sections.financial.links.sec_filings") }}
</li> </li>
<li @click="router.push('/annualreports')"> <li @click="router.push(localePath('/annualreports'))">
{{ t("site_map.sections.financial.links.annual_reports") }} {{ t("site_map.sections.financial.links.annual_reports") }}
</li> </li>
<li @click="router.push('/quarterlyreports')"> <li @click="router.push(localePath('/quarterlyreports'))">
{{ t("site_map.sections.financial.links.quarterly_reports") }} {{ t("site_map.sections.financial.links.quarterly_reports") }}
</li> </li>
</ul> </ul>
@ -70,10 +70,10 @@
<h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.stock.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/stock-quote')"> <li @click="router.push(localePath('/stock-quote'))">
{{ t("site_map.sections.stock.links.stock_quote") }} {{ t("site_map.sections.stock.links.stock_quote") }}
</li> </li>
<li @click="router.push('/historic-stock')"> <li @click="router.push(localePath('/historic-stock'))">
{{ t("site_map.sections.stock.links.historic_stock_price") }} {{ t("site_map.sections.stock.links.historic_stock_price") }}
</li> </li>
</ul> </ul>
@ -87,10 +87,10 @@
<h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.news.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/press-releases')"> <li @click="router.push(localePath('/press-releases'))">
{{ t("site_map.sections.news.links.press_releases") }} {{ t("site_map.sections.news.links.press_releases") }}
</li> </li>
<li @click="router.push('/events-calendar')"> <li @click="router.push(localePath('/events-calendar'))">
{{ t("site_map.sections.news.links.events_calendar") }} {{ t("site_map.sections.news.links.events_calendar") }}
</li> </li>
</ul> </ul>
@ -104,10 +104,10 @@
<h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3> <h3 class="section-title">{{ t("site_map.sections.investor.title") }}</h3>
<div class="content-block"> <div class="content-block">
<ul class="link-list"> <ul class="link-list">
<li @click="router.push('/contacts')"> <li @click="router.push(localePath('/contacts'))">
{{ t("site_map.sections.investor.links.contacts") }} {{ t("site_map.sections.investor.links.contacts") }}
</li> </li>
<li @click="router.push('/email-alerts')"> <li @click="router.push(localePath('/email-alerts'))">
{{ t("site_map.sections.investor.links.email_alerts") }} {{ t("site_map.sections.investor.links.email_alerts") }}
</li> </li>
</ul> </ul>
@ -121,6 +121,7 @@ import { onMounted, ref, onUnmounted } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
</script> </script>

View File

@ -532,6 +532,7 @@
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue"; import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
import { NTooltip } from "naive-ui"; import { NTooltip } from "naive-ui";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const localePath = useLocalePath();
import { useStockQuote } from "~/composables/useStockQuote.js"; import { useStockQuote } from "~/composables/useStockQuote.js";
import axios from "axios"; import axios from "axios";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -706,12 +707,14 @@ onUnmounted(() => {
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const handleLink = (item) => { const handleLink = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -705,13 +705,16 @@ onUnmounted(() => {
}); });
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const localePath = useLocalePath();
const handleLink = (item) => { const handleLink = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -313,6 +313,7 @@
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue"; import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
import { NTooltip } from "naive-ui"; import { NTooltip } from "naive-ui";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const localePath = useLocalePath();
import { useStockQuote } from "~/composables/useStockQuote.js"; import { useStockQuote } from "~/composables/useStockQuote.js";
import axios from "axios"; import axios from "axios";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -490,12 +491,14 @@ onUnmounted(() => {
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const handleLink = (item) => { const handleLink = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -490,6 +490,7 @@
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue"; import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
import { NTooltip } from "naive-ui"; import { NTooltip } from "naive-ui";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const localePath = useLocalePath();
import { useStockQuote } from "~/composables/useStockQuote.js"; import { useStockQuote } from "~/composables/useStockQuote.js";
import axios from "axios"; import axios from "axios";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -663,12 +664,14 @@ onUnmounted(() => {
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const handleLink = (item) => { const handleLink = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -158,6 +158,7 @@ import dayjs from "dayjs";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
const state = reactive({ const state = reactive({
@ -301,12 +302,14 @@ const handleSearch = () => {
}; };
const handleNewClick = (item) => { const handleNewClick = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -166,6 +166,7 @@ import dayjs from "dayjs";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
const state = reactive({ const state = reactive({
@ -310,12 +311,14 @@ const handleSearch = () => {
}; };
const handleNewClick = (item) => { const handleNewClick = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>

View File

@ -217,6 +217,7 @@ import axios from "axios";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
const state = reactive({ const state = reactive({
@ -247,7 +248,7 @@ const titleRefs = ref([]);
const selectedYearLabel = computed(() => { const selectedYearLabel = computed(() => {
const option = state.selectOptions.find( const option = state.selectOptions.find(
(opt) => opt.value === state.selectedValue (opt) => opt.value === state.selectedValue,
); );
return option ? option.label : ""; return option ? option.label : "";
}); });
@ -301,9 +302,16 @@ watch(
checkAllTitleOverflow(); checkAllTitleOverflow();
}); });
}, },
{ deep: true } { deep: true },
); );
const map = {
en: "enUS",
ja: "jaJP",
zh: "zhCN",
"zh-TW": "zhTW",
};
// //
const getPressReleasesDisplay = () => { const getPressReleasesDisplay = () => {
// //
@ -320,6 +328,7 @@ const getPressReleasesDisplay = () => {
? null ? null
: new Date(state.selectedValue).getTime() : new Date(state.selectedValue).getTime()
: null, : null,
langType: map[locale.value],
}; };
axios axios
.post(url, params) .post(url, params)
@ -346,13 +355,19 @@ const getPressReleasesDisplay = () => {
}); });
}; };
watch(locale, (newLocale, oldLocale) => {
//
state.currentPage = 1;
getPressReleasesDisplay();
});
// watcher // watcher
watch( watch(
() => [state.selectedValue, state.inputValue], () => [state.selectedValue, state.inputValue],
() => { () => {
state.currentPage = 1; state.currentPage = 1;
getPressReleasesDisplay(); getPressReleasesDisplay();
} },
); );
watch( watch(
@ -360,7 +375,7 @@ watch(
() => { () => {
state.currentPage = 1; state.currentPage = 1;
getPressReleasesDisplay(); getPressReleasesDisplay();
} },
); );
watch( watch(
@ -368,7 +383,7 @@ watch(
(newPage) => { (newPage) => {
state.gotoPage = newPage; state.gotoPage = newPage;
getPressReleasesDisplay(); getPressReleasesDisplay();
} },
); );
const handleSearch = () => { const handleSearch = () => {
@ -377,12 +392,14 @@ const handleSearch = () => {
}; };
const handleNewClick = (item) => { const handleNewClick = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.id, id: item.uuid,
}, },
}); }),
);
}; };
const totalPages = computed(() => { const totalPages = computed(() => {

View File

@ -158,6 +158,7 @@ import dayjs from "dayjs";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const localePath = useLocalePath();
const runtimeConfig = useRuntimeConfig(); const runtimeConfig = useRuntimeConfig();
const state = reactive({ const state = reactive({
@ -323,12 +324,14 @@ const handleSearch = () => {
}; };
const handleNewClick = (item) => { const handleNewClick = (item) => {
router.push({ router.push(
localePath({
path: "/news", path: "/news",
query: { query: {
id: item.uuid, id: item.uuid,
}, },
}); })
);
}; };
</script> </script>