Compare commits
6 Commits
95fa3d3e5e
...
d6412aade0
| Author | SHA1 | Date | |
|---|---|---|---|
| d6412aade0 | |||
|
|
a270e6fa08 | ||
|
|
e6de82b9d8 | ||
| 082fb55b53 | |||
| d60365f78d | |||
| 4d813db125 |
12
README.md
12
README.md
@ -44,6 +44,14 @@ pnpm run prod
|
||||
pnpm run build-prod
|
||||
```
|
||||
|
||||
### 部署项目
|
||||
# 发版
|
||||
|
||||
```bash
|
||||
## 正式
|
||||
|
||||
<https://www.fiee.com/myhome>
|
||||
Jenkins front-fiee-website
|
||||
|
||||
## 测试
|
||||
|
||||
Jenkins front-fiee-website
|
||||
<http://fiee-web.test.fontree.cn:8081/product-introduction>
|
||||
|
||||
1
env/.env.prod
vendored
1
env/.env.prod
vendored
@ -9,3 +9,4 @@ VITE_BASEURL = '//erpapi.test.fontree.cn:8081'
|
||||
|
||||
# 文档查看
|
||||
VITE_PAGE_URL="https://www.fiee.com"
|
||||
VITE_API_BASE_URL="https://erpapi.fiee.com/api"
|
||||
3
env/.env.test
vendored
3
env/.env.test
vendored
@ -9,4 +9,5 @@ VITE_BASEURL = '//erpapi.test.fontree.cn:8081'
|
||||
# 文档查看
|
||||
# VITE_PAGE_URL="http://172.16.100.22:8045"
|
||||
# VITE_PAGE_URL="http://192.168.88.50:5878"
|
||||
VITE_PAGE_URL="https://www.fiee.com"
|
||||
VITE_PAGE_URL="https://www.fiee.com"
|
||||
VITE_API_BASE_URL="http://erpapi.test.fontree.cn:8081/api"
|
||||
@ -97,8 +97,8 @@ const selectedLanguage = ref(
|
||||
);
|
||||
|
||||
const languageOptions = computed(() => [
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.en"), value: "en", key: "en" },
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.zh"), value: "zh", key: "zh" },
|
||||
{ label: t("language.zhTW"), value: "zh-TW", key: "zh-TW" },
|
||||
]);
|
||||
|
||||
@ -94,8 +94,8 @@ const selectedLanguage = ref(
|
||||
);
|
||||
|
||||
const languageOptions = computed(() => [
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.en"), value: "en", key: "en" },
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.zh"), value: "zh", key: "zh" },
|
||||
{ label: t("language.zhTW"), value: "zh-TW", key: "zh-TW" },
|
||||
]);
|
||||
|
||||
@ -107,8 +107,8 @@ const selectedLanguage = ref(
|
||||
localStorage.getItem("language") || locale.value || "en"
|
||||
);
|
||||
const languageOptions = computed(() => [
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.en"), value: "en", key: "en" },
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.zh"), value: "zh", key: "zh" },
|
||||
{ label: t("language.zhTW"), value: "zh-TW", key: "zh-TW" },
|
||||
]);
|
||||
|
||||
@ -103,8 +103,8 @@ const selectedLanguage = ref(
|
||||
localStorage.getItem("language") || locale.value || "en"
|
||||
);
|
||||
const languageOptions = computed(() => [
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.en"), value: "en", key: "en" },
|
||||
{ label: t("language.ja"), value: "ja", key: "ja" },
|
||||
{ label: t("language.zh"), value: "zh", key: "zh" },
|
||||
{ label: t("language.zhTW"), value: "zh-TW", key: "zh-TW" },
|
||||
]);
|
||||
|
||||
@ -49,16 +49,25 @@
|
||||
<script setup lang="jsx">
|
||||
import { NDataTable } from "naive-ui";
|
||||
import { committeeManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const committeeData = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await committeeManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await committeeManagement(params);
|
||||
committeeData.value = res.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const columns = [
|
||||
{
|
||||
|
||||
@ -49,16 +49,25 @@
|
||||
<script setup lang="jsx">
|
||||
import { NDataTable } from "naive-ui";
|
||||
import { committeeManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const committeeData = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await committeeManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await committeeManagement(params);
|
||||
committeeData.value = res.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const columns = [
|
||||
{
|
||||
|
||||
@ -49,16 +49,25 @@
|
||||
<script setup lang="jsx">
|
||||
import { NDataTable } from "naive-ui";
|
||||
import { committeeManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const committeeData = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await committeeManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await committeeManagement(params);
|
||||
committeeData.value = res.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const columns = [
|
||||
{
|
||||
|
||||
@ -49,16 +49,25 @@
|
||||
<script setup lang="jsx">
|
||||
import { NDataTable } from "naive-ui";
|
||||
import { committeeManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const committeeData = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await committeeManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await committeeManagement(params);
|
||||
committeeData.value = res.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const columns = [
|
||||
{
|
||||
|
||||
@ -34,16 +34,25 @@
|
||||
|
||||
<script setup>
|
||||
import { boardManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await boardManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await boardManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const otherDirectors = [
|
||||
{
|
||||
|
||||
@ -34,16 +34,25 @@
|
||||
|
||||
<script setup>
|
||||
import { boardManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await boardManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await boardManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const otherDirectors = [
|
||||
{
|
||||
|
||||
@ -34,16 +34,25 @@
|
||||
|
||||
<script setup>
|
||||
import { boardManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await boardManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await boardManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
const otherDirectors = [
|
||||
{
|
||||
name: "Hu Bin",
|
||||
|
||||
@ -34,16 +34,25 @@
|
||||
|
||||
<script setup>
|
||||
import { boardManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await boardManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await boardManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
const otherDirectors = [
|
||||
{
|
||||
name: "Hu Bin",
|
||||
|
||||
@ -27,7 +27,7 @@ async function handleSubmit(e) {
|
||||
message.warning(t("email_alerts.validation.field_length"));
|
||||
return;
|
||||
}
|
||||
let url = "http://erpapi.test.fontree.cn:8081/api/fiee/emailalerts/submit";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/emailalerts/submit`;
|
||||
// let url = 'https://erpapi-out.szjixun.cn/api/fiee/emailalerts/submit'
|
||||
const res = await axios.post(url, form.value);
|
||||
if (res.data.status === 0) {
|
||||
|
||||
@ -27,7 +27,7 @@ async function handleSubmit(e) {
|
||||
message.warning(t("email_alerts.validation.field_length"));
|
||||
return;
|
||||
}
|
||||
let url = "http://erpapi.test.fontree.cn:8081/api/fiee/emailalerts/submit";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/emailalerts/submit`;
|
||||
// let url = 'https://erpapi-out.szjixun.cn/api/fiee/emailalerts/submit'
|
||||
const res = await axios.post(url, form.value);
|
||||
if (res.data.status === 0) {
|
||||
|
||||
@ -27,7 +27,7 @@ async function handleSubmit(e) {
|
||||
message.warning(t("email_alerts.validation.field_length"));
|
||||
return;
|
||||
}
|
||||
let url = "http://erpapi.test.fontree.cn:8081/api/fiee/emailalerts/submit";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/emailalerts/submit`;
|
||||
// let url = 'https://erpapi-out.szjixun.cn/api/fiee/emailalerts/submit'
|
||||
const res = await axios.post(url, form.value);
|
||||
if (res.data.status === 0) {
|
||||
|
||||
@ -27,7 +27,7 @@ async function handleSubmit(e) {
|
||||
message.warning(t("email_alerts.validation.field_length"));
|
||||
return;
|
||||
}
|
||||
let url = "http://erpapi.test.fontree.cn:8081/api/fiee/emailalerts/submit";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/emailalerts/submit`;
|
||||
// let url = 'https://erpapi-out.szjixun.cn/api/fiee/emailalerts/submit'
|
||||
const res = await axios.post(url, form.value);
|
||||
if (res.data.status === 0) {
|
||||
|
||||
@ -125,13 +125,20 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import { reactive, ref } from "vue";
|
||||
import { reactive, ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import fileLink from "@/assets/image/content/icon-link.png";
|
||||
import { annualReport } from "@/api/auth";
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const state = reactive({
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
@ -155,11 +162,15 @@ const getListData = async () => {
|
||||
const res = await annualReport({
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
});
|
||||
state.total = res.data.total;
|
||||
annualReportsData.value = res?.data?.Item || [];
|
||||
};
|
||||
getListData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
const columns = [
|
||||
{
|
||||
// title: "File Name",
|
||||
@ -209,7 +220,6 @@ const columns = [
|
||||
},
|
||||
];
|
||||
|
||||
const { t } = useI18n();
|
||||
// 年度报告数据
|
||||
const annualReports = ref([
|
||||
{
|
||||
|
||||
@ -125,13 +125,20 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import { reactive, ref } from "vue";
|
||||
import { reactive, ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import fileLink from "@/assets/image/content/icon-link.png";
|
||||
import { annualReport } from "@/api/auth";
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const state = reactive({
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
@ -155,11 +162,16 @@ const getListData = async () => {
|
||||
const res = await annualReport({
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
});
|
||||
state.total = res.data.total;
|
||||
annualReportsData.value = res?.data?.Item || [];
|
||||
};
|
||||
getListData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
const columns = [
|
||||
{
|
||||
// title: "File Name",
|
||||
@ -209,7 +221,6 @@ const columns = [
|
||||
},
|
||||
];
|
||||
|
||||
const { t } = useI18n();
|
||||
// 年度报告数据
|
||||
const annualReports = ref([
|
||||
{
|
||||
|
||||
@ -127,13 +127,20 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import { reactive, ref } from "vue";
|
||||
import { reactive, ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import fileLink from "@/assets/image/content/icon-link.png";
|
||||
import { annualReport } from "@/api/auth";
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const state = reactive({
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
@ -156,11 +163,16 @@ const getListData = async () => {
|
||||
const res = await annualReport({
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
});
|
||||
state.total = res.data.total;
|
||||
annualReportsData.value = res?.data?.Item || [];
|
||||
};
|
||||
getListData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
const columns = [
|
||||
{
|
||||
// title: "File Name",
|
||||
@ -213,7 +225,6 @@ const columns = [
|
||||
},
|
||||
];
|
||||
|
||||
const { t } = useI18n();
|
||||
// 年度报告数据
|
||||
const annualReports = ref([
|
||||
{
|
||||
|
||||
@ -125,13 +125,20 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
import { reactive, ref } from "vue";
|
||||
import { reactive, ref, watch } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import fileLink from "@/assets/image/content/icon-link.png";
|
||||
import { annualReport } from "@/api/auth";
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const state = reactive({
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
@ -155,11 +162,16 @@ const getListData = async () => {
|
||||
const res = await annualReport({
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
});
|
||||
state.total = res.data.total;
|
||||
annualReportsData.value = res?.data?.Item || [];
|
||||
};
|
||||
getListData();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
const columns = [
|
||||
{
|
||||
// title: "File Name",
|
||||
@ -209,7 +221,6 @@ const columns = [
|
||||
},
|
||||
];
|
||||
|
||||
const { t } = useI18n();
|
||||
// 年度报告数据
|
||||
const annualReports = ref([
|
||||
{
|
||||
|
||||
@ -162,7 +162,13 @@ import { useI18n } from "vue-i18n";
|
||||
// import quarterlyPdf2025Q2 from "@/assets/file/quarterly/10Q 2025-Q2.pdf";
|
||||
// import quarterlyPdf2025Q3N from "@/assets/file/quarterly/10Q 2025-Q1-No1.pdf";
|
||||
import axios from "axios";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const searchQuery = ref("");
|
||||
|
||||
const state = reactive({
|
||||
@ -171,7 +177,7 @@ const state = reactive({
|
||||
total: 0,
|
||||
gotoPage: 1,
|
||||
listConfig: {
|
||||
url: "http://erpapi.test.fontree.cn:8081/api/fiee/reports/quarterly/display",
|
||||
url: `${import.meta.env.VITE_API_BASE_URL}/api/fiee/reports/quarterly/display`,
|
||||
// url: "https://erpapi.fiee.com/api/fiee/reports/quarterly/display",
|
||||
params: {
|
||||
filtrate: {
|
||||
@ -215,6 +221,7 @@ const getListData = async () => {
|
||||
...state.listConfig.params,
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
const res = await axios.post(state.listConfig.url, params);
|
||||
console.log(res);
|
||||
@ -230,6 +237,9 @@ const getListData = async () => {
|
||||
state.total = res.data.data.total || 0;
|
||||
}
|
||||
};
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
|
||||
@ -162,7 +162,13 @@ import { useI18n } from "vue-i18n";
|
||||
// import quarterlyPdf2025Q2 from "@/assets/file/quarterly/10Q 2025-Q2.pdf";
|
||||
// import quarterlyPdf2025Q3N from "@/assets/file/quarterly/10Q 2025-Q1-No1.pdf";
|
||||
import axios from "axios";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const searchQuery = ref("");
|
||||
|
||||
const state = reactive({
|
||||
@ -171,7 +177,7 @@ const state = reactive({
|
||||
total: 0,
|
||||
gotoPage: 1,
|
||||
listConfig: {
|
||||
url: "http://erpapi.test.fontree.cn:8081/api/fiee/reports/quarterly/display",
|
||||
url: `${import.meta.env.VITE_API_BASE_URL}/api/fiee/reports/quarterly/display`,
|
||||
// url: "https://erpapi.fiee.com/api/fiee/reports/quarterly/display",
|
||||
params: {
|
||||
filtrate: {
|
||||
@ -215,6 +221,7 @@ const getListData = async () => {
|
||||
...state.listConfig.params,
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
const res = await axios.post(state.listConfig.url, params);
|
||||
console.log(res);
|
||||
@ -230,6 +237,9 @@ const getListData = async () => {
|
||||
state.total = res.data.data.total || 0;
|
||||
}
|
||||
};
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
|
||||
@ -146,7 +146,13 @@ import { useI18n } from "vue-i18n";
|
||||
// import quarterlyPdf2025Q2 from "@/assets/file/quarterly/10Q 2025-Q2.pdf";
|
||||
// import quarterlyPdf2025Q3N from "@/assets/file/quarterly/10Q 2025-Q1-No1.pdf";
|
||||
import axios from "axios";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const searchQuery = ref("");
|
||||
|
||||
const state = reactive({
|
||||
@ -155,7 +161,7 @@ const state = reactive({
|
||||
total: 0,
|
||||
gotoPage: 1,
|
||||
listConfig: {
|
||||
url: "http://erpapi.test.fontree.cn:8081/api/fiee/reports/quarterly/display",
|
||||
url: `${import.meta.env.VITE_API_BASE_URL}/api/fiee/reports/quarterly/display`,
|
||||
// url: "https://erpapi.fiee.com/api/fiee/reports/quarterly/display",
|
||||
params: {
|
||||
filtrate: {
|
||||
@ -199,6 +205,7 @@ const getListData = async () => {
|
||||
...state.listConfig.params,
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
const res = await axios.post(state.listConfig.url, params);
|
||||
console.log(res);
|
||||
@ -214,6 +221,9 @@ const getListData = async () => {
|
||||
state.total = res.data.data.total || 0;
|
||||
}
|
||||
};
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
|
||||
@ -160,7 +160,13 @@ import { useI18n } from "vue-i18n";
|
||||
// import quarterlyPdf2025Q2 from "@/assets/file/quarterly/10Q 2025-Q2.pdf";
|
||||
// import quarterlyPdf2025Q3N from "@/assets/file/quarterly/10Q 2025-Q1-No1.pdf";
|
||||
import axios from "axios";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const searchQuery = ref("");
|
||||
|
||||
const state = reactive({
|
||||
@ -169,7 +175,7 @@ const state = reactive({
|
||||
total: 0,
|
||||
gotoPage: 1,
|
||||
listConfig: {
|
||||
url: "http://erpapi.test.fontree.cn:8081/api/fiee/reports/quarterly/display",
|
||||
url: `${import.meta.env.VITE_API_BASE_URL}/api/fiee/reports/quarterly/display`,
|
||||
// url: "https://erpapi.fiee.com/api/fiee/reports/quarterly/display",
|
||||
params: {
|
||||
filtrate: {
|
||||
@ -213,6 +219,7 @@ const getListData = async () => {
|
||||
...state.listConfig.params,
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
const res = await axios.post(state.listConfig.url, params);
|
||||
console.log(res);
|
||||
@ -228,6 +235,9 @@ const getListData = async () => {
|
||||
state.total = res.data.data.total || 0;
|
||||
}
|
||||
};
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getListData();
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
|
||||
@ -15,12 +15,16 @@
|
||||
</div>
|
||||
<div class="sec-filings-container relative z-10 !w-[900PX] !p-0 !pb-[60PX]">
|
||||
<!-- 标题 -->
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">{{ $t("SECFILINGS.TITLE") }}</div>
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">
|
||||
{{ $t("SECFILINGS.TITLE") }}
|
||||
</div>
|
||||
|
||||
<!-- 筛选器 -->
|
||||
<div class="filters flex px-[30PX]">
|
||||
<div class="filter-group flex-1 flex">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL1") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL1")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.selectedYear"
|
||||
:options="state.yearOptions"
|
||||
@ -32,7 +36,9 @@
|
||||
</div>
|
||||
|
||||
<div class="filter-group flex-1 flex">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL2") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL2")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.pageSize"
|
||||
:options="state.pageSizeOptions"
|
||||
@ -83,14 +89,25 @@
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:page-sizes="[
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 10 }), value: 10 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 25 }), value: 25 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 50 }), value: 50 },
|
||||
]"
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 10 }),
|
||||
value: 10,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 25 }),
|
||||
value: 25,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 50 }),
|
||||
value: 50,
|
||||
},
|
||||
]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
>
|
||||
<template #goto>{{ t("financialinformation.quarterlyreports.pagination.goto") }}</template>
|
||||
<template #goto>{{
|
||||
t("financialinformation.quarterlyreports.pagination.goto")
|
||||
}}</template>
|
||||
<!-- <template #prev>
|
||||
<span>‹ Previous</span>
|
||||
</template>
|
||||
@ -226,7 +243,7 @@ onMounted(() => {
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/list`;
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
@ -278,8 +295,8 @@ const handleSort = (sortData) => {
|
||||
const columns = [
|
||||
{
|
||||
// title: "Filing Date",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>;
|
||||
},
|
||||
key: "filing_date",
|
||||
sorter: "default",
|
||||
@ -290,8 +307,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Form",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>;
|
||||
},
|
||||
key: "form",
|
||||
width: 150,
|
||||
@ -329,8 +346,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Description",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>;
|
||||
},
|
||||
key: "description",
|
||||
// ellipsis: {
|
||||
@ -342,8 +359,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "View",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>;
|
||||
},
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
@ -618,7 +635,7 @@ tr {
|
||||
}
|
||||
|
||||
.filter-label {
|
||||
font-size: 14PX;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
font-weight: 500;
|
||||
margin-right: 10px;
|
||||
|
||||
@ -15,12 +15,16 @@
|
||||
</div>
|
||||
<div class="sec-filings-container relative z-10 !w-[900PX] !p-0 !pb-[60PX]">
|
||||
<!-- 标题 -->
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">{{ $t("SECFILINGS.TITLE") }}</div>
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">
|
||||
{{ $t("SECFILINGS.TITLE") }}
|
||||
</div>
|
||||
|
||||
<!-- 筛选器 -->
|
||||
<div class="filters flex px-[30PX]">
|
||||
<div class="filter-group flex-1 flex">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL1") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL1")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.selectedYear"
|
||||
:options="state.yearOptions"
|
||||
@ -32,7 +36,9 @@
|
||||
</div>
|
||||
|
||||
<div class="filter-group flex-1 flex">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL2") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL2")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.pageSize"
|
||||
:options="state.pageSizeOptions"
|
||||
@ -83,14 +89,25 @@
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:page-sizes="[
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 10 }), value: 10 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 25 }), value: 25 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 50 }), value: 50 },
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 10 }),
|
||||
value: 10,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 25 }),
|
||||
value: 25,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 50 }),
|
||||
value: 50,
|
||||
},
|
||||
]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
>
|
||||
<template #goto>{{ t("financialinformation.quarterlyreports.pagination.goto") }}</template>
|
||||
<template #goto>{{
|
||||
t("financialinformation.quarterlyreports.pagination.goto")
|
||||
}}</template>
|
||||
<!-- <template #prev>
|
||||
<span>‹ Previous</span>
|
||||
</template>
|
||||
@ -226,7 +243,7 @@ onMounted(() => {
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/list`;
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
@ -278,8 +295,8 @@ const handleSort = (sortData) => {
|
||||
const columns = [
|
||||
{
|
||||
// title: "Filing Date",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>;
|
||||
},
|
||||
key: "filing_date",
|
||||
sorter: "default",
|
||||
@ -290,8 +307,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Form",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>;
|
||||
},
|
||||
key: "form",
|
||||
width: 150,
|
||||
@ -329,8 +346,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Description",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>;
|
||||
},
|
||||
key: "description",
|
||||
// ellipsis: {
|
||||
@ -342,8 +359,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "View",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>;
|
||||
},
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
@ -618,7 +635,7 @@ tr {
|
||||
}
|
||||
|
||||
.filter-label {
|
||||
font-size: 14PX;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
font-weight: 500;
|
||||
margin-right: 10px;
|
||||
|
||||
@ -15,28 +15,34 @@
|
||||
</div>
|
||||
<div class="sec-filings-container relative z-10 !w-[343PX] !p-0 !pb-[60PX]">
|
||||
<!-- 标题 -->
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">{{ $t("SECFILINGS.TITLE") }}</div>
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">
|
||||
{{ $t("SECFILINGS.TITLE") }}
|
||||
</div>
|
||||
|
||||
<!-- 筛选器 -->
|
||||
<div class="filters flex px-[30PX] flex-col">
|
||||
<div class="filter-group flex-1 flex justify-between">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL1") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL1")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.selectedYear"
|
||||
:options="state.yearOptions"
|
||||
placeholder="- Any -"
|
||||
style="flex: 1;max-width: 250px;"
|
||||
style="flex: 1; max-width: 250px"
|
||||
clearable
|
||||
@update:value="handleYearChange"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="filter-group flex-1 flex justify-between">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL2") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL2")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.pageSize"
|
||||
:options="state.pageSizeOptions"
|
||||
style="flex: 1;max-width: 250px;"
|
||||
style="flex: 1; max-width: 250px"
|
||||
@update:value="handlePageSizeChange"
|
||||
/>
|
||||
</div>
|
||||
@ -60,7 +66,7 @@
|
||||
:size="'medium'"
|
||||
:row-key="(row) => row.idx"
|
||||
:scrollbar-props="{
|
||||
trigger: 'none'
|
||||
trigger: 'none',
|
||||
}"
|
||||
@update:sorter="handleSort"
|
||||
/>
|
||||
@ -71,15 +77,24 @@
|
||||
class="w-[343PX] pagination-container flex flex-col items-end justify-center mt-[15PX]"
|
||||
>
|
||||
<n-pagination
|
||||
style="transform: scale(0.95);"
|
||||
style="transform: scale(0.95)"
|
||||
v-model:page="state.currentPage"
|
||||
v-model:page-size="state.pageSize"
|
||||
show-size-picker
|
||||
:item-count="state.total"
|
||||
:page-sizes="[
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 10 }), value: 10 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 25 }), value: 25 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 50 }), value: 50 },
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 10 }),
|
||||
value: 10,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 25 }),
|
||||
value: 25,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 50 }),
|
||||
value: 50,
|
||||
},
|
||||
]"
|
||||
:page-slot="5"
|
||||
@update:page="handlePageChange"
|
||||
@ -229,7 +244,7 @@ onMounted(() => {
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/list`;
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
@ -281,8 +296,8 @@ const handleSort = (sortData) => {
|
||||
const columns = [
|
||||
{
|
||||
// title: "Filing Date",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>;
|
||||
},
|
||||
key: "filing_date",
|
||||
sorter: "default",
|
||||
@ -293,8 +308,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Form",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>;
|
||||
},
|
||||
key: "form",
|
||||
width: 150,
|
||||
@ -332,8 +347,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Description",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>;
|
||||
},
|
||||
key: "description",
|
||||
minWidth: 200,
|
||||
@ -346,8 +361,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "View",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>;
|
||||
},
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
@ -591,7 +606,7 @@ tr {
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 24PX;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
margin-bottom: 40px;
|
||||
@ -599,9 +614,9 @@ tr {
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 60PX;
|
||||
top: -10PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
top: -10px;
|
||||
height: 4px;
|
||||
background-color: #ff7bac;
|
||||
left: 0;
|
||||
}
|
||||
@ -622,7 +637,7 @@ tr {
|
||||
}
|
||||
|
||||
.filter-label {
|
||||
font-size: 14PX;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
font-weight: 500;
|
||||
margin-right: 10px;
|
||||
|
||||
@ -15,28 +15,34 @@
|
||||
</div>
|
||||
<div class="sec-filings-container relative z-10 !w-[618PX] !p-0 !pb-[60PX]">
|
||||
<!-- 标题 -->
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">{{ $t("SECFILINGS.TITLE") }}</div>
|
||||
<div class="page-title ml-[30PX] mt-[50PX]">
|
||||
{{ $t("SECFILINGS.TITLE") }}
|
||||
</div>
|
||||
|
||||
<!-- 筛选器 -->
|
||||
<div class="filters flex px-[30PX] flex-col">
|
||||
<div class="filter-group flex-1 flex justify-between">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL1") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL1")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.selectedYear"
|
||||
:options="state.yearOptions"
|
||||
placeholder="- Any -"
|
||||
style="flex: 1;max-width: 250px;"
|
||||
style="flex: 1; max-width: 250px"
|
||||
clearable
|
||||
@update:value="handleYearChange"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="filter-group flex-1 flex justify-between">
|
||||
<label class="filter-label">{{ $t("SECFILINGS.FILTERlABEL2") }}</label>
|
||||
<label class="filter-label">{{
|
||||
$t("SECFILINGS.FILTERlABEL2")
|
||||
}}</label>
|
||||
<n-select
|
||||
v-model:value="state.pageSize"
|
||||
:options="state.pageSizeOptions"
|
||||
style="flex: 1;max-width: 250px;"
|
||||
style="flex: 1; max-width: 250px"
|
||||
@update:value="handlePageSizeChange"
|
||||
/>
|
||||
</div>
|
||||
@ -74,14 +80,25 @@
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:page-sizes="[
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 10 }), value: 10 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 25 }), value: 25 },
|
||||
{ label: t('historic_stock.pagination.perPage', { size: 50 }), value: 50 },
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 10 }),
|
||||
value: 10,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 25 }),
|
||||
value: 25,
|
||||
},
|
||||
{
|
||||
label: t('historic_stock.pagination.perPage', { size: 50 }),
|
||||
value: 50,
|
||||
},
|
||||
]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
>
|
||||
<template #goto>{{ t("financialinformation.quarterlyreports.pagination.goto") }}</template>
|
||||
<template #goto>{{
|
||||
t("financialinformation.quarterlyreports.pagination.goto")
|
||||
}}</template>
|
||||
<!-- <template #prev>
|
||||
<span>‹ Previous</span>
|
||||
</template>
|
||||
@ -226,7 +243,7 @@ onMounted(() => {
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/list`;
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
@ -278,8 +295,8 @@ const handleSort = (sortData) => {
|
||||
const columns = [
|
||||
{
|
||||
// title: "Filing Date",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FILING_DATE")}</div>;
|
||||
},
|
||||
key: "filing_date",
|
||||
sorter: "default",
|
||||
@ -290,8 +307,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Form",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.FORM")}</div>;
|
||||
},
|
||||
key: "form",
|
||||
width: 150,
|
||||
@ -329,8 +346,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "Description",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.DESCRIPTION")}</div>;
|
||||
},
|
||||
key: "description",
|
||||
// ellipsis: {
|
||||
@ -342,8 +359,8 @@ const columns = [
|
||||
},
|
||||
{
|
||||
// title: "View",
|
||||
title(){
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>
|
||||
title() {
|
||||
return <div class="font-bold">{t("TABLE_TITLE.VIEW")}</div>;
|
||||
},
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
@ -595,9 +612,9 @@ tr {
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 60PX;
|
||||
top: -10PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
top: -10px;
|
||||
height: 4px;
|
||||
background-color: #ff7bac;
|
||||
left: 0;
|
||||
}
|
||||
@ -618,7 +635,7 @@ tr {
|
||||
}
|
||||
|
||||
.filter-label {
|
||||
font-size: 14PX;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
font-weight: 500;
|
||||
margin-right: 10px;
|
||||
|
||||
@ -129,7 +129,7 @@ onMounted(() => {
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/detail`;
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
|
||||
@ -129,7 +129,7 @@ onMounted(() => {
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/detail`;
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
|
||||
@ -129,7 +129,7 @@ onMounted(() => {
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/detail`;
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
|
||||
@ -129,7 +129,7 @@ onMounted(() => {
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/sec-filing/web/detail`;
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
|
||||
@ -20,7 +20,9 @@
|
||||
</div>
|
||||
<div class="w-[900PX] mx-auto relative z-11">
|
||||
<div class="title mb-[50px] text-center text-left">
|
||||
<h1 style="font-size: 40px; margin-top: 60px">{{ $t("header_menu.corporate_information.governance") }}</h1>
|
||||
<h1 style="font-size: 40px; margin-top: 60px">
|
||||
{{ $t("header_menu.corporate_information.governance") }}
|
||||
</h1>
|
||||
</div>
|
||||
<div
|
||||
v-for="(item, index) in state.list"
|
||||
@ -30,9 +32,7 @@
|
||||
<div
|
||||
class="flex justify-between items-center hover:bg-[#FFF8FB] min-h-[1px] h-[48PX]"
|
||||
>
|
||||
<div
|
||||
class="border-content text-[16PX] pl-[10PX] font-[500]"
|
||||
>
|
||||
<div class="border-content text-[16PX] pl-[10PX] font-[500]">
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
@ -169,8 +169,7 @@ watch(
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = "https://erpapi.fiee.com/api/fiee/governance/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/governance/display`;
|
||||
let params = {};
|
||||
axios
|
||||
.get(url, { params })
|
||||
@ -200,7 +199,7 @@ const handleViewDocument = (item) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.border-content{
|
||||
.border-content {
|
||||
position: relative;
|
||||
&::before {
|
||||
content: "";
|
||||
@ -208,23 +207,23 @@ const handleViewDocument = (item) => {
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
width: 1PX;
|
||||
height: 20PX;
|
||||
background: #FF7BAC;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
}
|
||||
|
||||
/* 标题样式 */
|
||||
.title h1 {
|
||||
position: relative;
|
||||
margin-left: 15PX;
|
||||
margin-left: 15px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 5PX;
|
||||
width: 60px;
|
||||
height: 5px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
|
||||
@ -256,7 +255,7 @@ const handleViewDocument = (item) => {
|
||||
rgba(255, 123, 172, 0.1) 0%,
|
||||
rgba(0, 0, 0, 0) 50%
|
||||
);
|
||||
opacity: 0;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,9 @@
|
||||
</div>
|
||||
<div class="w-[900PX] mx-auto relative z-11">
|
||||
<div class="title mb-[50px] text-center text-left">
|
||||
<h1 style="font-size: 40px; margin-top: 60px">{{ $t("header_menu.corporate_information.governance") }}</h1>
|
||||
<h1 style="font-size: 40px; margin-top: 60px">
|
||||
{{ $t("header_menu.corporate_information.governance") }}
|
||||
</h1>
|
||||
</div>
|
||||
<div
|
||||
v-for="(item, index) in state.list"
|
||||
@ -30,9 +32,7 @@
|
||||
<div
|
||||
class="flex justify-between items-center hover:bg-[#FFF8FB] min-h-[1px] h-[48PX]"
|
||||
>
|
||||
<div
|
||||
class="border-content text-[16PX] pl-[10PX] font-[500]"
|
||||
>
|
||||
<div class="border-content text-[16PX] pl-[10PX] font-[500]">
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
@ -65,7 +65,9 @@
|
||||
class="flex items-center pr-[10PX] cursor-pointer"
|
||||
@click="handleViewDocument(item)"
|
||||
>
|
||||
<view class="text-[16PX] text-[#FF7BAC]">{{ $t("operation.view_document") }}</view>
|
||||
<view class="text-[16PX] text-[#FF7BAC]">{{
|
||||
$t("operation.view_document")
|
||||
}}</view>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="ml-3 -mr-1 h-5 w-5"
|
||||
@ -169,8 +171,7 @@ watch(
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = "https://erpapi.fiee.com/api/fiee/governance/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/governance/display`;
|
||||
let params = {};
|
||||
axios
|
||||
.get(url, { params })
|
||||
@ -200,7 +201,7 @@ const handleViewDocument = (item) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.border-content{
|
||||
.border-content {
|
||||
position: relative;
|
||||
&::before {
|
||||
content: "";
|
||||
@ -208,23 +209,23 @@ const handleViewDocument = (item) => {
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
width: 1PX;
|
||||
height: 20PX;
|
||||
background: #FF7BAC;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
}
|
||||
|
||||
/* 标题样式 */
|
||||
.title h1 {
|
||||
position: relative;
|
||||
margin-left: 15PX;
|
||||
margin-left: 15px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 5PX;
|
||||
width: 60px;
|
||||
height: 5px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,9 @@
|
||||
</div>
|
||||
<div class="w-[327PX] mx-auto relative z-11">
|
||||
<div class="title mb-[50px] text-center text-left">
|
||||
<h1 style="font-size: 24px; margin-top: 60px">{{ $t("header_menu.corporate_information.governance") }}</h1>
|
||||
<h1 style="font-size: 24px; margin-top: 60px">
|
||||
{{ $t("header_menu.corporate_information.governance") }}
|
||||
</h1>
|
||||
</div>
|
||||
<div
|
||||
v-for="(item, index) in state.list"
|
||||
@ -30,9 +32,7 @@
|
||||
<div
|
||||
class="flex justify-between items-center hover:bg-[#FFF8FB] min-h-[1px] h-[48PX]"
|
||||
>
|
||||
<div
|
||||
class="border-content text-[16PX] pl-[10PX] font-[500]"
|
||||
>
|
||||
<div class="border-content text-[16PX] pl-[10PX] font-[500]">
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
@ -168,8 +168,7 @@ watch(
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = "https://erpapi.fiee.com/api/fiee/governance/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/governance/display`;
|
||||
let params = {};
|
||||
axios
|
||||
.get(url, { params })
|
||||
@ -199,7 +198,7 @@ const handleViewDocument = (item) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.border-content{
|
||||
.border-content {
|
||||
position: relative;
|
||||
&::before {
|
||||
content: "";
|
||||
@ -207,23 +206,23 @@ const handleViewDocument = (item) => {
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
width: 1PX;
|
||||
height: 20PX;
|
||||
background: #FF7BAC;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
}
|
||||
|
||||
/* 标题样式 */
|
||||
.title h1 {
|
||||
position: relative;
|
||||
margin-left: 15PX;
|
||||
margin-left: 15px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 5PX;
|
||||
width: 60px;
|
||||
height: 5px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
|
||||
@ -279,4 +278,3 @@ const handleViewDocument = (item) => {
|
||||
background: linear-gradient(to right, #fff0f6, #ffffff);
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -20,7 +20,9 @@
|
||||
</div>
|
||||
<div class="w-[618PX] mx-auto relative z-11">
|
||||
<div class="title mb-[50px] text-center text-left">
|
||||
<h1 style="font-size: 40px; margin-top: 60px">{{ $t("header_menu.corporate_information.governance") }}</h1>
|
||||
<h1 style="font-size: 40px; margin-top: 60px">
|
||||
{{ $t("header_menu.corporate_information.governance") }}
|
||||
</h1>
|
||||
</div>
|
||||
<div
|
||||
v-for="(item, index) in state.list"
|
||||
@ -30,9 +32,7 @@
|
||||
<div
|
||||
class="flex justify-between items-center hover:bg-[#FFF8FB] min-h-[1px] h-[48PX]"
|
||||
>
|
||||
<div
|
||||
class="border-content text-[16PX] pl-[10PX] font-[500]"
|
||||
>
|
||||
<div class="border-content text-[16PX] pl-[10PX] font-[500]">
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
@ -65,7 +65,9 @@
|
||||
class="flex items-center pr-[10PX] cursor-pointer"
|
||||
@click="handleViewDocument(item)"
|
||||
>
|
||||
<view class="text-[16PX] text-[#FF7BAC] flex-shrink-0">View Document</view>
|
||||
<view class="text-[16PX] text-[#FF7BAC] flex-shrink-0"
|
||||
>View Document</view
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="ml-3 -mr-1 h-5 w-5"
|
||||
@ -169,8 +171,7 @@ watch(
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = "https://erpapi.fiee.com/api/fiee/governance/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/governance/display`;
|
||||
let params = {};
|
||||
axios
|
||||
.get(url, { params })
|
||||
@ -200,7 +201,7 @@ const handleViewDocument = (item) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.border-content{
|
||||
.border-content {
|
||||
position: relative;
|
||||
&::before {
|
||||
content: "";
|
||||
@ -208,23 +209,23 @@ const handleViewDocument = (item) => {
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
width: 1PX;
|
||||
height: 20PX;
|
||||
background: #FF7BAC;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
}
|
||||
|
||||
/* 标题样式 */
|
||||
.title h1 {
|
||||
position: relative;
|
||||
margin-left: 15PX;
|
||||
margin-left: 15px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 5PX;
|
||||
width: 60px;
|
||||
height: 5px;
|
||||
background: #ff7bac;
|
||||
}
|
||||
|
||||
|
||||
@ -103,16 +103,25 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { computed } from "vue";
|
||||
import { departmentManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await departmentManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await departmentManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
|
||||
const { t } = useI18n();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const leadershipTeam = computed(() => [
|
||||
{
|
||||
|
||||
@ -104,16 +104,25 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { computed } from "vue";
|
||||
import { departmentManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await departmentManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await departmentManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
|
||||
const { t } = useI18n();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const leadershipTeam = computed(() => [
|
||||
{
|
||||
|
||||
@ -102,16 +102,25 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { computed } from "vue";
|
||||
import { departmentManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await departmentManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await departmentManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
|
||||
const { t } = useI18n();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const leadershipTeam = computed(() => [
|
||||
{
|
||||
|
||||
@ -102,16 +102,25 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { computed } from "vue";
|
||||
import { departmentManagement } from "@/api/auth";
|
||||
import { ref } from "vue";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const data = ref([]);
|
||||
const getData = async () => {
|
||||
const res = await departmentManagement({});
|
||||
const getData = async (params) => {
|
||||
const res = await departmentManagement(params);
|
||||
data.value = res?.data?.item || [];
|
||||
};
|
||||
getData();
|
||||
|
||||
const { t } = useI18n();
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
console.log("语言已切换:", newLocale);
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
getData({ langType: map[newLocale] });
|
||||
}, { immediate: true });
|
||||
|
||||
const leadershipTeam = computed(() => [
|
||||
{
|
||||
|
||||
@ -116,7 +116,10 @@
|
||||
class="w-[95px]"
|
||||
/>
|
||||
</div>
|
||||
<p style="font-size: 13.5px; width: 439px" class="my-0 text-[#455363]">
|
||||
<p
|
||||
style="font-size: 13.5px; width: 439px"
|
||||
class="my-0 text-[#455363]"
|
||||
>
|
||||
{{ $t("COMPANYOVERVIEW.TITLEFIVE.CONTENT").replace("•", "") }}
|
||||
</p>
|
||||
<div class="flex items-center">
|
||||
@ -139,7 +142,10 @@
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新闻模块 -->
|
||||
<section class="news-section relative z-99" style="width: 900px; margin: 60px auto">
|
||||
<section
|
||||
class="news-section relative z-99"
|
||||
style="width: 900px; margin: 60px auto"
|
||||
>
|
||||
<div class="flex justify-between">
|
||||
<h2 class="section-titles section-titles1">
|
||||
{{ $t("HOME.CONTAINY.NEWS.TITLE") }}
|
||||
@ -362,7 +368,9 @@
|
||||
class="data-row"
|
||||
style="transform: translateX(-10px); padding-left: 10px"
|
||||
>
|
||||
<span class="data-label"> {{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }} </span>
|
||||
<span class="data-label">
|
||||
{{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }}
|
||||
</span>
|
||||
<span class="data-value">{{ sampleDate }}</span>
|
||||
</div>
|
||||
<div
|
||||
@ -572,13 +580,21 @@ const newList = ref([
|
||||
// },
|
||||
]);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
langType: map[locale.value],
|
||||
};
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
@ -598,7 +614,7 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const { t: $t } = useI18n();
|
||||
const { t: $t, locale } = useI18n();
|
||||
const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
@ -633,6 +649,11 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
const titleRefs = ref([]);
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
@ -672,7 +693,7 @@ const handleLink = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
@ -853,7 +874,7 @@ const handleLink = (item) => {
|
||||
left: 0;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #FF7BAC;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
|
||||
@ -888,7 +909,7 @@ const handleLink = (item) => {
|
||||
display: flex;
|
||||
/* justify-content: space-between; */
|
||||
margin: 24px 0;
|
||||
border-left: 2px solid #FF7BAC;
|
||||
border-left: 2px solid #ff7bac;
|
||||
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
|
||||
@ -116,7 +116,10 @@
|
||||
class="w-[95px]"
|
||||
/>
|
||||
</div>
|
||||
<p style="font-size: 13.5px; width: 439px" class="my-0 text-[#455363]">
|
||||
<p
|
||||
style="font-size: 13.5px; width: 439px"
|
||||
class="my-0 text-[#455363]"
|
||||
>
|
||||
{{ $t("COMPANYOVERVIEW.TITLEFIVE.CONTENT").replace("•", "") }}
|
||||
</p>
|
||||
<div class="flex items-center">
|
||||
@ -139,7 +142,10 @@
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新闻模块 -->
|
||||
<section class="news-section relative z-99" style="width: 900px; margin: 60px auto;">
|
||||
<section
|
||||
class="news-section relative z-99"
|
||||
style="width: 900px; margin: 60px auto"
|
||||
>
|
||||
<div class="flex justify-between">
|
||||
<h2 class="section-titles section-titles1">
|
||||
{{ $t("HOME.CONTAINY.NEWS.TITLE") }}
|
||||
@ -362,7 +368,9 @@
|
||||
class="data-row"
|
||||
style="transform: translateX(-10px); padding-left: 10px"
|
||||
>
|
||||
<span class="data-label"> {{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }} </span>
|
||||
<span class="data-label">
|
||||
{{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }}
|
||||
</span>
|
||||
<span class="data-value">{{ sampleDate }}</span>
|
||||
</div>
|
||||
<div
|
||||
@ -572,13 +580,21 @@ const newList = ref([
|
||||
// },
|
||||
]);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
langType: map[locale.value],
|
||||
};
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
@ -598,7 +614,7 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const { t: $t } = useI18n();
|
||||
const { t: $t, locale } = useI18n();
|
||||
const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
@ -633,6 +649,11 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
const titleRefs = ref([]);
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
@ -672,7 +693,7 @@ const handleLink = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
@ -853,7 +874,7 @@ const handleLink = (item) => {
|
||||
left: 0;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #FF7BAC;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
|
||||
@ -888,7 +909,7 @@ const handleLink = (item) => {
|
||||
display: flex;
|
||||
/* justify-content: space-between; */
|
||||
margin: 24px 0;
|
||||
border-left: 2px solid #FF7BAC;
|
||||
border-left: 2px solid #ff7bac;
|
||||
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
|
||||
@ -1,31 +1,52 @@
|
||||
<template>
|
||||
<div class="home-page relative overflow-hidden z-10 bg-[#ffffff]">
|
||||
<div class="fixed h-[100vh] left-[50%] translate-x-[-50%] z-0"
|
||||
style="width: 343px; pointer-events: none; mix-blend-mode: multiply">
|
||||
<div
|
||||
class="fixed h-[100vh] left-[50%] translate-x-[-50%] z-0"
|
||||
style="width: 343px; pointer-events: none; mix-blend-mode: multiply"
|
||||
>
|
||||
<img src="@/assets/image/content/line375.png" class="w-[100%]" alt="" />
|
||||
</div>
|
||||
<div class="w-[100%] h-[800PX] z-[] top-0 absolute">
|
||||
<div class="relative w-[100%] h-[100%]">
|
||||
<img src="@/assets/image/content/bg_15.png" alt="" class="w-[100vw] h-[813PX] absolute" />
|
||||
<img src="@/assets/image/content/bg_4.png" alt=""
|
||||
class="w-[204PX] h-[140PX] absolute top-[189PX] left-[50%] translate-x-[-50%]" />
|
||||
<img src="@/assets/image/content/bg_5.png" alt=""
|
||||
class="w-[100vw] absolute bottom-[-80PX] lef-0 right-0 z-99" />
|
||||
<img
|
||||
src="@/assets/image/content/bg_15.png"
|
||||
alt=""
|
||||
class="w-[100vw] h-[813PX] absolute"
|
||||
/>
|
||||
<img
|
||||
src="@/assets/image/content/bg_4.png"
|
||||
alt=""
|
||||
class="w-[204PX] h-[140PX] absolute top-[189PX] left-[50%] translate-x-[-50%]"
|
||||
/>
|
||||
<img
|
||||
src="@/assets/image/content/bg_5.png"
|
||||
alt=""
|
||||
class="w-[100vw] absolute bottom-[-80PX] lef-0 right-0 z-99"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<section class="company-overview" style="
|
||||
<section
|
||||
class="company-overview"
|
||||
style="
|
||||
max-width: 311px;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
padding-top: 320px;
|
||||
height: 790px;
|
||||
">
|
||||
"
|
||||
>
|
||||
<div class="hero-section">
|
||||
<transition name="fade-up" appear>
|
||||
<n-h1 class="hero-title">
|
||||
<div class="content-blocks" :class="{ 'slide-in': isInView }" ref="contentRef">
|
||||
<div
|
||||
class="content-blocks"
|
||||
:class="{ 'slide-in': isInView }"
|
||||
ref="contentRef"
|
||||
>
|
||||
<text>{{ $t("HOME.CONTAIN.TITLEONE.CONTENT") }}</text>
|
||||
<p style="text-align: justify;">{{ $t("HOME.CONTAIN.TITLEONE.CONTENTTWO") }}</p>
|
||||
<p style="text-align: justify">
|
||||
{{ $t("HOME.CONTAIN.TITLEONE.CONTENTTWO") }}
|
||||
</p>
|
||||
</div>
|
||||
</n-h1>
|
||||
</transition>
|
||||
@ -33,87 +54,156 @@
|
||||
</section>
|
||||
|
||||
<!-- 公司概况 -->
|
||||
<section class="company-overview" style="max-width: 311px; margin: 0 auto; padding: 0;margin-top: 100px;">
|
||||
<section
|
||||
class="company-overview"
|
||||
style="max-width: 311px; margin: 0 auto; padding: 0; margin-top: 100px"
|
||||
>
|
||||
<h3 class="section-title">{{ $t("COMPANYOVERVIEW.TITLETWO.TITLE") }}</h3>
|
||||
<h1 class="section-titles">{{ $t("COMPANYOVERVIEW.Company") }}</h1>
|
||||
<div class="content-block text-[#455363]">
|
||||
<p style="text-align: justify;">{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENT") }}</p>
|
||||
<p style="text-align: justify;">
|
||||
<p style="text-align: justify">
|
||||
{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENT") }}
|
||||
</p>
|
||||
<p style="text-align: justify">
|
||||
<text class="text-[#455363]">{{
|
||||
$t("COMPANYOVERVIEW.TITLETWO.CONTENTTWOTITLE")
|
||||
}}</text>
|
||||
}}</text>
|
||||
|
||||
{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENTTWO") }}
|
||||
</p>
|
||||
<p style="text-align: justify;">{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENTTHREE") }}</p>
|
||||
<p style="text-align: justify">
|
||||
{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENTTHREE") }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<n-carousel autoplay>
|
||||
<img src="@/assets/image/content/profile_1.png" alt="" class="w-[201PX] h-[201PX] mx-auto" />
|
||||
<img src="@/assets/image/content/profile_2.png" alt="" class="w-[201PX] h-[201PX] mx-auto" />
|
||||
<img src="@/assets/image/content/profile_3.png" alt="" class="w-[201PX] h-[201PX] mx-auto" />
|
||||
<img src="@/assets/image/content/profile_4.png" alt="" class="w-[201PX] h-[201PX] mx-auto" />
|
||||
<img
|
||||
src="@/assets/image/content/profile_1.png"
|
||||
alt=""
|
||||
class="w-[201PX] h-[201PX] mx-auto"
|
||||
/>
|
||||
<img
|
||||
src="@/assets/image/content/profile_2.png"
|
||||
alt=""
|
||||
class="w-[201PX] h-[201PX] mx-auto"
|
||||
/>
|
||||
<img
|
||||
src="@/assets/image/content/profile_3.png"
|
||||
alt=""
|
||||
class="w-[201PX] h-[201PX] mx-auto"
|
||||
/>
|
||||
<img
|
||||
src="@/assets/image/content/profile_4.png"
|
||||
alt=""
|
||||
class="w-[201PX] h-[201PX] mx-auto"
|
||||
/>
|
||||
<template #dots="{ total, currentIndex, to }">
|
||||
<ul class="custom-dots">
|
||||
<li v-for="index of total" :key="index" :class="{ ['is-active']: currentIndex === index - 1 }"
|
||||
@click="to(index - 1)" />
|
||||
<li
|
||||
v-for="index of total"
|
||||
:key="index"
|
||||
:class="{ ['is-active']: currentIndex === index - 1 }"
|
||||
@click="to(index - 1)"
|
||||
/>
|
||||
</ul>
|
||||
</template>
|
||||
</n-carousel>
|
||||
</section>
|
||||
<!-- 突出成就 -->
|
||||
<section class="achievements overflow-hidden z-99 relative" style="
|
||||
<section
|
||||
class="achievements overflow-hidden z-99 relative"
|
||||
style="
|
||||
width: 100vw;
|
||||
padding: 0 40px;
|
||||
margin-top: 40px;
|
||||
background: linear-gradient(180deg, #e5ffff 0%, #fff8fb 100%);
|
||||
">
|
||||
<div style="max-width: 311px; height: 306px; padding: 64px 0"
|
||||
class="m-[auto] flex flex-col items-center text-center">
|
||||
"
|
||||
>
|
||||
<div
|
||||
style="max-width: 311px; height: 306px; padding: 64px 0"
|
||||
class="m-[auto] flex flex-col items-center text-center"
|
||||
>
|
||||
<h2 class="section-titles">
|
||||
{{ $t("COMPANYOVERVIEW.TITLEFIVE.TITLE") }}
|
||||
</h2>
|
||||
<div class="w-100% flex items-center justify-between">
|
||||
<p style="font-size: 14px; text-align: justify;" class="my-0 text-[#455363]">
|
||||
<p
|
||||
style="font-size: 14px; text-align: justify"
|
||||
class="my-0 text-[#455363]"
|
||||
>
|
||||
{{ $t("COMPANYOVERVIEW.TITLEFIVE.CONTENT").replace("•", "") }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新闻模块 -->
|
||||
<section class="news-section relative z-99" style="width: 311px; margin: 60px auto">
|
||||
<section
|
||||
class="news-section relative z-99"
|
||||
style="width: 311px; margin: 60px auto"
|
||||
>
|
||||
<div class="flex justify-between mb-[10PX]">
|
||||
<h2 class="section-titles section-titles1">
|
||||
{{ $t("HOME.CONTAINY.NEWS.TITLE") }}
|
||||
</h2>
|
||||
<div v-if="totalPages > 1">
|
||||
<!-- 左右切换按钮 -->
|
||||
<img v-if="currentPage === 0" disabled class="w-[38PX] h-[38PX]" src="@/assets/image/content/switch_right.png"
|
||||
alt="" />
|
||||
<img v-else @click="prevPage" src="@/assets/image/content/switch_left.png"
|
||||
class="transform rotate-180 w-[38PX] h-[38PX] cursor-pointer" alt="" />
|
||||
<img
|
||||
v-if="currentPage === 0"
|
||||
disabled
|
||||
class="w-[38PX] h-[38PX]"
|
||||
src="@/assets/image/content/switch_right.png"
|
||||
alt=""
|
||||
/>
|
||||
<img
|
||||
v-else
|
||||
@click="prevPage"
|
||||
src="@/assets/image/content/switch_left.png"
|
||||
class="transform rotate-180 w-[38PX] h-[38PX] cursor-pointer"
|
||||
alt=""
|
||||
/>
|
||||
|
||||
<img v-if="currentPage >= totalPages - 1" class="transform rotate-180 w-[38PX] h-[38PX] ml-[20PX]" disabled
|
||||
src="@/assets/image/content/switch_right.png" alt="" />
|
||||
<img v-else @click="nextPage" class="w-[38PX] h-[38PX] ml-[20PX] cursor-pointer"
|
||||
src="@/assets/image/content/switch_left.png" alt="" />
|
||||
<img
|
||||
v-if="currentPage >= totalPages - 1"
|
||||
class="transform rotate-180 w-[38PX] h-[38PX] ml-[20PX]"
|
||||
disabled
|
||||
src="@/assets/image/content/switch_right.png"
|
||||
alt=""
|
||||
/>
|
||||
<img
|
||||
v-else
|
||||
@click="nextPage"
|
||||
class="w-[38PX] h-[38PX] ml-[20PX] cursor-pointer"
|
||||
src="@/assets/image/content/switch_left.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Grid 布局容器 -->
|
||||
<div class="grid grid-cols-1 gap-4">
|
||||
<template v-for="(item, index) in pages" :key="index">
|
||||
<div style="height: 232px" class="news-card flex flex-col justify-between">
|
||||
<div
|
||||
style="height: 232px"
|
||||
class="news-card flex flex-col justify-between"
|
||||
>
|
||||
<div class="text-[24PX] font-600">{{ item.time }}</div>
|
||||
<n-tooltip trigger="hover" :disabled="!item.showTooltip" width="trigger">
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div :ref="(el) => setTitleRef(el, index)" style="
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
" class="text-[16PX] text-[#455363]">
|
||||
"
|
||||
class="text-[16PX] text-[#455363]"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</template>
|
||||
@ -121,75 +211,95 @@
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
<div class="text-[16PX] text-[#FF7BAC] font-500 flex items-center cursor-pointer"
|
||||
@click="handleLink(item)">
|
||||
<div
|
||||
class="text-[16PX] text-[#FF7BAC] font-500 flex items-center cursor-pointer"
|
||||
@click="handleLink(item)"
|
||||
>
|
||||
View Press Release
|
||||
<img src="@/assets/image/content/vector.png" alt="" class="ml-[10PX] w-[6.5PX] h-[13PX]" />
|
||||
<img
|
||||
src="@/assets/image/content/vector.png"
|
||||
alt=""
|
||||
class="ml-[10PX] w-[6.5PX] h-[13PX]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新增:股票信息与活动预告双栏模块 -->
|
||||
<section class="dual-column-section bg-[url('@/assets/image/content/bg_stock375.png')] relative z-10" style="
|
||||
<section
|
||||
class="dual-column-section bg-[url('@/assets/image/content/bg_stock375.png')] relative z-10"
|
||||
style="
|
||||
width: 100vw;
|
||||
height: 570px;
|
||||
margin: 60px auto;
|
||||
background-size: 100% 100%;
|
||||
border-radius: 15PX 15PX 0 0;
|
||||
">
|
||||
border-radius: 15px 15px 0 0;
|
||||
"
|
||||
>
|
||||
<div style="width: 343px" class="m-auto">
|
||||
<!-- 股票信息卡片 -->
|
||||
<div class="">
|
||||
<h2 class="card-title mx-[15PX]">{{ $t("HOME.CONTAINY.STOCK_INFO.TITLE") }}</h2>
|
||||
<h2 class="card-title mx-[15PX]">
|
||||
{{ $t("HOME.CONTAINY.STOCK_INFO.TITLE") }}
|
||||
</h2>
|
||||
<div class="stock-data">
|
||||
<div class="data-row">
|
||||
<span class="data-label"> {{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }} </span>
|
||||
<span class="data-label">
|
||||
{{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }}
|
||||
</span>
|
||||
<span class="data-value">{{ sampleDate }}</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
<span class="data-label">{{
|
||||
$t("HOME.CONTAINY.STOCK_INFO.LAST_PRICE")
|
||||
}}</span>
|
||||
}}</span>
|
||||
<span class="data-value">${{ stockQuote.price }}</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
<span class="data-label">{{
|
||||
$t("HOME.CONTAINY.STOCK_INFO.CHANGE")
|
||||
}}</span>
|
||||
}}</span>
|
||||
|
||||
<span class="data-value">{{ stockQuote.change || "--" }}</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
<span class="data-label">{{
|
||||
$t("HOME.CONTAINY.STOCK_INFO.STOCK_CODE")
|
||||
}}</span>
|
||||
}}</span>
|
||||
<span class="data-value">NASDAQ: FIEE</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
<span class="data-label">{{
|
||||
$t("HOME.CONTAINY.STOCK_INFO.VOLUME")
|
||||
}}</span>
|
||||
}}</span>
|
||||
<span class="data-value">{{ stockQuote.volume }}</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
<span class="data-label">{{
|
||||
$t("HOME.CONTAINY.STOCK_INFO.MARKET_CAP")
|
||||
}}</span>
|
||||
}}</span>
|
||||
<span class="data-value">${{ stockQuote.marketCap }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="dual-column-section relative z-10" style="width: 100vw; height: 300px; margin: 60px auto; padding: 0 40px">
|
||||
<section
|
||||
class="dual-column-section relative z-10"
|
||||
style="width: 100vw; height: 300px; margin: 60px auto; padding: 0 40px"
|
||||
>
|
||||
<div class="w-[311PX] m-auto">
|
||||
<div class="">
|
||||
<h2 class="card-title1">
|
||||
{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.TITLE") }}
|
||||
</h2>
|
||||
<div class="event-item">
|
||||
<img src="@/assets/image/content/empty.png" alt="" class="w-[100%] h-[151PX]" />
|
||||
<img
|
||||
src="@/assets/image/content/empty.png"
|
||||
alt=""
|
||||
class="w-[100%] h-[151PX]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -205,7 +315,7 @@ import { useStockQuote } from "@/store/stock-quote/index.js";
|
||||
import axios from "axios";
|
||||
const { getStockQuate, stockQuote, formatted } = useStockQuote();
|
||||
import { NCarousel, NDivider, NMarquee, NPopselect } from "naive-ui";
|
||||
import { ArrowBack, ArrowForward } from '@vicons/ionicons5'
|
||||
import { ArrowBack, ArrowForward } from "@vicons/ionicons5";
|
||||
|
||||
// 每页显示的项目数 - 最多三行,每行最多2个项目,所以每页最多6个项目
|
||||
const itemsPerPage = 6;
|
||||
@ -259,13 +369,21 @@ const newList = ref([
|
||||
// },
|
||||
]);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
langType: map[locale.value],
|
||||
};
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
@ -285,7 +403,7 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const { t: $t } = useI18n();
|
||||
const { t: $t, locale } = useI18n();
|
||||
const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
@ -320,6 +438,11 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
const titleRefs = ref([]);
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
@ -359,7 +482,7 @@ const handleLink = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
@ -411,26 +534,23 @@ const handleLink = (item) => {
|
||||
bottom: 20px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
|
||||
}
|
||||
|
||||
.custom-dots li {
|
||||
display: inline-block;
|
||||
width: 8PX;
|
||||
height: 8PX;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin: 0 12px;
|
||||
border-radius: 50%;
|
||||
background-color: #EFEFEF;
|
||||
transition:
|
||||
width 0.3s,
|
||||
background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
background-color: #efefef;
|
||||
transition: width 0.3s, background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.custom-dots li.is-active {
|
||||
border-radius: 20PX;
|
||||
width: 40PX;
|
||||
background: #DDDDDD;
|
||||
border-radius: 20px;
|
||||
width: 40px;
|
||||
background: #dddddd;
|
||||
}
|
||||
.home-page {
|
||||
background-size: 100% 100%;
|
||||
@ -499,7 +619,7 @@ const handleLink = (item) => {
|
||||
color: #ff7bac;
|
||||
}
|
||||
.section-titles {
|
||||
font-size: 22PX;
|
||||
font-size: 22px;
|
||||
margin-bottom: 15px;
|
||||
margin-top: 0;
|
||||
color: black;
|
||||
@ -509,8 +629,8 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
@ -604,9 +724,9 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
background: #FF7BAC;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
|
||||
@ -622,8 +742,8 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
@ -640,18 +760,18 @@ const handleLink = (item) => {
|
||||
.data-row {
|
||||
display: flex;
|
||||
/* justify-content: space-between; */
|
||||
margin: 10PX;
|
||||
border-left: 2PX solid #FF7BAC;
|
||||
transform: translateX(-10PX);
|
||||
padding-left: 10PX;
|
||||
margin: 10px;
|
||||
border-left: 2px solid #ff7bac;
|
||||
transform: translateX(-10px);
|
||||
padding-left: 10px;
|
||||
|
||||
font-size: 12PX;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.data-label {
|
||||
// font-weight: 500;
|
||||
width: 150PX;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.data-value {
|
||||
@ -735,10 +855,10 @@ const handleLink = (item) => {
|
||||
|
||||
.news-card {
|
||||
background: white;
|
||||
border-radius: 12PX;
|
||||
padding: 30PX;
|
||||
border-radius: 12px;
|
||||
padding: 30px;
|
||||
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
|
||||
border-top: 14PX solid #ff7bac;
|
||||
border-top: 14px solid #ff7bac;
|
||||
}
|
||||
|
||||
.news-date {
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<!-- 公司概况 -->
|
||||
<section
|
||||
class="company-overview"
|
||||
style="max-width: 618px; margin: 0 auto; padding: 0;margin-top: 100px;"
|
||||
style="max-width: 618px; margin: 0 auto; padding: 0; margin-top: 100px"
|
||||
>
|
||||
<h3 class="section-title">{{ $t("COMPANYOVERVIEW.TITLETWO.TITLE") }}</h3>
|
||||
<h1 class="section-titles">{{ $t("COMPANYOVERVIEW.Company") }}</h1>
|
||||
@ -118,7 +118,10 @@
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新闻模块 -->
|
||||
<section class="news-section relative z-99" style="width: 618px; margin: 60px auto; margin-top: 100px;">
|
||||
<section
|
||||
class="news-section relative z-99"
|
||||
style="width: 618px; margin: 60px auto; margin-top: 100px"
|
||||
>
|
||||
<div class="flex justify-between">
|
||||
<h2 class="section-titles section-titles1">
|
||||
{{ $t("HOME.CONTAINY.NEWS.TITLE") }}
|
||||
@ -340,7 +343,9 @@
|
||||
<h2 class="card-title">{{ $t("HOME.CONTAINY.STOCK_INFO.TITLE") }}</h2>
|
||||
<div class="stock-data">
|
||||
<div class="data-row">
|
||||
<span class="data-label"> {{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }} </span>
|
||||
<span class="data-label">
|
||||
{{ $t("HOME.CONTAINY.STOCK_INFO.TIME") }}
|
||||
</span>
|
||||
<span class="data-value">{{ sampleDate }}</span>
|
||||
</div>
|
||||
<div class="data-row">
|
||||
@ -535,13 +540,20 @@ const newList = ref([
|
||||
// },
|
||||
]);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
langType: map[locale.value],
|
||||
};
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
@ -561,7 +573,7 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const { t: $t } = useI18n();
|
||||
const { t: $t, locale } = useI18n();
|
||||
const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
@ -596,6 +608,11 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
const titleRefs = ref([]);
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
@ -635,7 +652,7 @@ const handleLink = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
@ -719,8 +736,8 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
@ -814,8 +831,8 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
@ -832,8 +849,8 @@ const handleLink = (item) => {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 60PX;
|
||||
height: 4PX;
|
||||
width: 60px;
|
||||
height: 4px;
|
||||
background: #ff7bac;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
@ -852,10 +869,10 @@ const handleLink = (item) => {
|
||||
display: flex;
|
||||
/* justify-content: space-between; */
|
||||
margin: 40px 0;
|
||||
border-left: 2px solid #FF7BAC;
|
||||
border-left: 2px solid #ff7bac;
|
||||
transform: translateX(-10px);
|
||||
padding-left: 30px;
|
||||
font-size: 14PX;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="relative">
|
||||
<div
|
||||
class="w-[100vw] bg-[#ffffff] z-[1] top-0 left-0 bottom-0 right-0 absolute"
|
||||
class="w-[100vw] min-h-[100vh] bg-[#ffffff] z-[1] top-0 left-0 bottom-0 right-0 absolute"
|
||||
></div>
|
||||
<div
|
||||
class="page-container overflow-hidden z-10 relative"
|
||||
@ -19,15 +19,21 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted } from "vue";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from "axios";
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
const state = reactive({
|
||||
id: "", // 新闻id
|
||||
});
|
||||
@ -40,7 +46,9 @@ onMounted(() => {
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases?id=" + state.id;
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases?uuid=${
|
||||
state.id
|
||||
}&langType=${map[locale.value]}`;
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
@ -51,6 +59,10 @@ const getPressReleasesInfo = () => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.page-container {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="relative">
|
||||
<div
|
||||
class="w-[100vw] bg-[#ffffff] z-[1] top-0 left-0 bottom-0 right-0 absolute"
|
||||
class="w-[100vw] min-h-[100vh] bg-[#ffffff] z-[1] top-0 left-0 bottom-0 right-0 absolute"
|
||||
></div>
|
||||
<div
|
||||
class="page-container overflow-hidden z-10 relative"
|
||||
@ -19,11 +19,11 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted } from "vue";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from "axios";
|
||||
@ -38,9 +38,18 @@ onMounted(() => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases?id=" + state.id;
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases?uuid=${
|
||||
state.id
|
||||
}&langType=${map[locale.value]}`;
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
@ -51,10 +60,15 @@ const getPressReleasesInfo = () => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.page-container {
|
||||
width: 900PX;
|
||||
width: 900px;
|
||||
margin: 0 auto;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
@ -5,11 +5,11 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted } from "vue";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
@ -24,9 +24,18 @@ onMounted(() => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases?uuid=${
|
||||
state.id
|
||||
}&langType=${map[locale.value]}`;
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
@ -37,6 +46,11 @@ const getPressReleasesInfo = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -5,11 +5,11 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted } from "vue";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
@ -24,9 +24,20 @@ onMounted(() => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases?uuid=${
|
||||
state.id
|
||||
}&langType=${map[locale.value]}`;
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
@ -37,6 +48,11 @@ const getPressReleasesInfo = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 监听语言切换
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -209,7 +209,7 @@ import axios from "axios";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const state = reactive({
|
||||
selectedValue: "all_years", //选中值
|
||||
@ -275,10 +275,17 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
state.loading = true;
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
@ -288,6 +295,7 @@ const getPressReleasesDisplay = () => {
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
axios
|
||||
.post(url, params)
|
||||
@ -295,7 +303,7 @@ const getPressReleasesDisplay = () => {
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString("en-US", {
|
||||
item.date = new Date(item.date).toLocaleDateString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
@ -311,6 +319,9 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
// 添加 watcher 来实现自动筛选
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
@ -345,7 +356,7 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -209,7 +209,7 @@ import axios from "axios";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const state = reactive({
|
||||
selectedValue: "all_years", //选中值
|
||||
@ -275,10 +275,17 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
state.loading = true;
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
@ -288,6 +295,7 @@ const getPressReleasesDisplay = () => {
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
axios
|
||||
.post(url, params)
|
||||
@ -295,7 +303,7 @@ const getPressReleasesDisplay = () => {
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString("en-US", {
|
||||
item.date = new Date(item.date).toLocaleDateString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
@ -311,6 +319,10 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
// 添加 watcher 来实现自动筛选
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
@ -345,7 +357,7 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -216,7 +216,7 @@ import axios from "axios";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const state = reactive({
|
||||
selectedValue: "all_years", //选中值
|
||||
@ -303,10 +303,17 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
state.loading = true;
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
@ -316,6 +323,7 @@ const getPressReleasesDisplay = () => {
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
axios
|
||||
.post(url, params)
|
||||
@ -323,7 +331,7 @@ const getPressReleasesDisplay = () => {
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString("en-US", {
|
||||
item.date = new Date(item.date).toLocaleDateString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
@ -339,6 +347,10 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
// 添加 watcher 来实现自动筛选
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
@ -373,7 +385,7 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -209,7 +209,7 @@ import axios from "axios";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
const state = reactive({
|
||||
selectedValue: "all_years", //选中值
|
||||
@ -275,10 +275,17 @@ watch(
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
const map = {
|
||||
en: "enUS",
|
||||
ja: "jaJP",
|
||||
zh: "zhCN",
|
||||
"zh-TW": "zhTW",
|
||||
};
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
state.loading = true;
|
||||
let url = "https://erpapi.fiee.com/api/fiee/pressreleases/display";
|
||||
let url = `${import.meta.env.VITE_API_BASE_URL}/fiee/pressreleases/display`;
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
@ -288,6 +295,7 @@ const getPressReleasesDisplay = () => {
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
langType: map[locale.value],
|
||||
};
|
||||
axios
|
||||
.post(url, params)
|
||||
@ -295,7 +303,7 @@ const getPressReleasesDisplay = () => {
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString("en-US", {
|
||||
item.date = new Date(item.date).toLocaleDateString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
@ -311,6 +319,10 @@ const getPressReleasesDisplay = () => {
|
||||
});
|
||||
};
|
||||
|
||||
watch(locale, (newLocale, oldLocale) => {
|
||||
getPressReleasesDisplay();
|
||||
});
|
||||
|
||||
// 添加 watcher 来实现自动筛选
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
@ -345,7 +357,7 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
id: item.uuid,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -20,7 +20,7 @@ const trimTrailingLetter = (val) => {
|
||||
</div>
|
||||
<section class="quote-layout">
|
||||
<div class="price-card">
|
||||
<div class="price-value">{{ stockQuote.price }} <span style="font-size: 100px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-value" style="display: flex; align-items: center;gap: 10px;">{{ stockQuote.price }} <span style="font-size: 70px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-market">{{ t("stock_quote.nasdaq") }}</div>
|
||||
<div class="price-time">{{ formatted }}</div>
|
||||
</div>
|
||||
|
||||
@ -21,7 +21,7 @@ const trimTrailingLetter = (val) => {
|
||||
</div>
|
||||
<section class="quote-layout">
|
||||
<div class="price-card">
|
||||
<div class="price-value">{{ stockQuote.price }} <span style="font-size: 75px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-value" style="display: flex; align-items: center;gap: 10px;">{{ stockQuote.price }} <span style="font-size: 60px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-market">{{ t("stock_quote.nasdaq") }}</div>
|
||||
<div class="price-time">{{ formatted }}</div>
|
||||
</div>
|
||||
|
||||
@ -23,7 +23,7 @@ const trimTrailingLetter = (val) => {
|
||||
|
||||
<div class="data-section">
|
||||
<div class="price-card">
|
||||
<div class="price-value">{{ stockQuote.price }} <span style="font-size: 75px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-value" style="display: flex; align-items: center;gap: 10px;">{{ stockQuote.price }} <span style="font-size: 60px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-nasdaq">{{ t("stock_quote.nasdaq") }}</div>
|
||||
<div class="price-date">{{ formatted }}</div>
|
||||
</div>
|
||||
|
||||
@ -22,7 +22,7 @@ const trimTrailingLetter = (val) => {
|
||||
|
||||
<div class="data-section">
|
||||
<div class="price-card">
|
||||
<div class="price-value">{{ stockQuote.price }} <span style="font-size: 70 * 2.5px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-value" style="display: flex; align-items: center;gap: 10px;">{{ stockQuote.price }} <span style="font-size: 40 * 1.5px;">{{ t("stock_quote.dollar") }}</span> </div>
|
||||
<div class="price-nasdaq">{{ t("stock_quote.nasdaq") }}</div>
|
||||
<div class="price-date">{{ formatted }}</div>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user