Compare commits
2 Commits
main
...
wyfMain-de
Author | SHA1 | Date | |
---|---|---|---|
2a813315cc | |||
92553de56a |
3
env/.env.prod
vendored
3
env/.env.prod
vendored
@ -5,6 +5,3 @@ VITE_DELETE_CONSOLE = true
|
||||
# 是否开启sourcemap
|
||||
VITE_SHOW_SOURCEMAP = false
|
||||
VITE_BASEURL = '//appointteam.szjixun.cn'
|
||||
|
||||
# 文档查看
|
||||
VITE_PAGE_URL="https://www.fiee.com"
|
||||
|
4
env/.env.test
vendored
4
env/.env.test
vendored
@ -3,7 +3,3 @@ NODE_ENV = 'test'
|
||||
# 是否去除console 和 debugger
|
||||
VITE_DELETE_CONSOLE = false
|
||||
VITE_BASEURL = '//kid-art-test.szjixun.cn'
|
||||
|
||||
# 文档查看
|
||||
VITE_PAGE_URL="http://172.16.100.22:8045"
|
||||
# VITE_PAGE_URL="http://192.168.88.50:5878"
|
||||
|
@ -1 +0,0 @@
|
||||
google-site-verification: googledeec2461668656b4.html
|
@ -12,7 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@fingerprintjs/fingerprintjs": "^4.4.3",
|
||||
"@onlyoffice/document-editor-vue": "^1.5.0",
|
||||
"@unocss/reset": "^0.61.9",
|
||||
"@vicons/ionicons5": "^0.13.0",
|
||||
"@vicons/utils": "^0.1.4",
|
||||
|
@ -11,9 +11,6 @@ importers:
|
||||
'@fingerprintjs/fingerprintjs':
|
||||
specifier: ^4.4.3
|
||||
version: 4.4.3
|
||||
'@onlyoffice/document-editor-vue':
|
||||
specifier: ^1.5.0
|
||||
version: 1.5.0(vue@3.4.35)
|
||||
'@unocss/reset':
|
||||
specifier: ^0.61.9
|
||||
version: 0.61.9
|
||||
@ -1282,11 +1279,6 @@ packages:
|
||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
'@onlyoffice/document-editor-vue@1.5.0':
|
||||
resolution: {integrity: sha512-HZEebUhBloP4LomspI5BddgoQdhtPq91h57yA9K/Lk70MMc1vgOTQ4Wq+N5TZYXNxdDTv+TSsEVFLnBCl1Y71A==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
|
||||
'@polka/url@1.0.0-next.25':
|
||||
resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
|
||||
|
||||
@ -5544,11 +5536,6 @@ snapshots:
|
||||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.17.1
|
||||
|
||||
'@onlyoffice/document-editor-vue@1.5.0(vue@3.4.35)':
|
||||
dependencies:
|
||||
lodash: 4.17.21
|
||||
vue: 3.4.35
|
||||
|
||||
'@polka/url@1.0.0-next.25': {}
|
||||
|
||||
'@rollup/plugin-babel@6.0.4(@babel/core@7.25.2)(rollup@4.20.0)':
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 176 KiB |
Binary file not shown.
Before Width: | Height: | Size: 184 KiB |
Binary file not shown.
Before Width: | Height: | Size: 210 KiB |
@ -2,10 +2,10 @@
|
||||
import { computed } from 'vue'
|
||||
import { useWindowSize } from '@vueuse/core'
|
||||
|
||||
import size375 from '@/components/customDefaultPage/size375/index.vue'
|
||||
import size768 from '@/components/customDefaultPage/size1920/index.vue'
|
||||
import size1440 from '@/components/customDefaultPage/size1920/index.vue'
|
||||
import size1920 from '@/components/customDefaultPage/size1920/index.vue'
|
||||
import size375 from '@/components/customDefaultPage/size375Default/index.vue'
|
||||
import size768 from '@/components/customDefaultPage/size1920Default/index.vue'
|
||||
import size1440 from '@/components/customDefaultPage/size1920Default/index.vue'
|
||||
import size1920 from '@/components/customDefaultPage/size1920Default/index.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
import { computed } from 'vue'
|
||||
import { useWindowSize } from '@vueuse/core'
|
||||
|
||||
import size375 from '@/components/customEcharts/size375/index.vue'
|
||||
import size768 from '@/components/customEcharts/size375/index.vue'
|
||||
import size1440 from '@/components/customEcharts/size1920/index.vue'
|
||||
import size1920 from '@/components/customEcharts/size1920/index.vue'
|
||||
import size375 from '@/components/customEcharts/size375Echarts/index.vue'
|
||||
import size768 from '@/components/customEcharts/size375Echarts/index.vue'
|
||||
import size1440 from '@/components/customEcharts/size1920Echarts/index.vue'
|
||||
import size1920 from '@/components/customEcharts/size1920Echarts/index.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
import { computed } from 'vue'
|
||||
import { useWindowSize } from '@vueuse/core'
|
||||
|
||||
import size375 from '@/components/customFooter/size375/index.vue'
|
||||
import size768 from '@/components/customFooter/size768/index.vue'
|
||||
import size1440 from '@/components/customFooter/size1920/index.vue'
|
||||
import size1920 from '@/components/customFooter/size1920/index.vue'
|
||||
import size375 from '@/components/customFooter/size375Footer/index.vue'
|
||||
import size768 from '@/components/customFooter/size768Footer/index.vue'
|
||||
import size1440 from '@/components/customFooter/size1920Footer/index.vue'
|
||||
import size1920 from '@/components/customFooter/size1920Footer/index.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
import { computed } from 'vue'
|
||||
import { useWindowSize } from '@vueuse/core'
|
||||
|
||||
import size375 from '@/components/customHeader/size375/index.vue'
|
||||
import size768 from '@/components/customHeader/size375/index.vue'
|
||||
import size1440 from '@/components/customHeader/size1440/index.vue'
|
||||
import size1920 from '@/components/customHeader/size1920/index.vue'
|
||||
import size375 from '@/components/customHeader/size375Header/index.vue'
|
||||
import size768 from '@/components/customHeader/size375Header/index.vue'
|
||||
import size1440 from '@/components/customHeader/size1440Header/index.vue'
|
||||
import size1920 from '@/components/customHeader/size1920Header/index.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
|
@ -143,11 +143,6 @@ const routes = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/office',
|
||||
name: 'office',
|
||||
component: () => import('@/views/office/index.vue'),
|
||||
},
|
||||
|
||||
// {
|
||||
// path: '/companyprofil',
|
||||
|
@ -38,12 +38,12 @@ const otherDirectors = [
|
||||
contain:
|
||||
"Previously served as the treasury director of Taifeng Cultural Communication Co., Ltd where she oversees its financial matters from November 2018 to November 2024. Prior to that, Ms. Cao served as a business manager of Yangfeng Art Exchange Co., Ltd from February 2016 to October 2018. From March 2011 to January 2016, she served as the treasury officer of financial department of Suzhou Industrial Park Xinfushida Plastic Profile Products Co., Ltd.",
|
||||
},
|
||||
// {
|
||||
// name: "David E. Lazar",
|
||||
// title: "Director",
|
||||
// contain:
|
||||
// "Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
// },
|
||||
{
|
||||
name: "David E. Lazar",
|
||||
title: "Director",
|
||||
contain:
|
||||
"Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
},
|
||||
|
||||
{
|
||||
name: "David Natan",
|
||||
|
@ -34,12 +34,12 @@ const otherDirectors = [
|
||||
contain:
|
||||
"Previously served as the treasury director of Taifeng Cultural Communication Co., Ltd where she oversees its financial matters from November 2018 to November 2024. Prior to that, Ms. Cao served as a business manager of Yangfeng Art Exchange Co., Ltd from February 2016 to October 2018. From March 2011 to January 2016, she served as the treasury officer of financial department of Suzhou Industrial Park Xinfushida Plastic Profile Products Co., Ltd.",
|
||||
},
|
||||
// {
|
||||
// name: "David E. Lazar",
|
||||
// title: "Director",
|
||||
// contain:
|
||||
// "Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
// },
|
||||
{
|
||||
name: "David E. Lazar",
|
||||
title: "Director",
|
||||
contain:
|
||||
"Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
},
|
||||
|
||||
{
|
||||
name: "David Natan",
|
||||
|
@ -34,12 +34,12 @@ const otherDirectors = [
|
||||
contain:
|
||||
"Previously served as the treasury director of Taifeng Cultural Communication Co., Ltd where she oversees its financial matters from November 2018 to November 2024. Prior to that, Ms. Cao served as a business manager of Yangfeng Art Exchange Co., Ltd from February 2016 to October 2018. From March 2011 to January 2016, she served as the treasury officer of financial department of Suzhou Industrial Park Xinfushida Plastic Profile Products Co., Ltd.",
|
||||
},
|
||||
// {
|
||||
// name: "David E. Lazar",
|
||||
// title: "Director",
|
||||
// contain:
|
||||
// "Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
// },
|
||||
{
|
||||
name: "David E. Lazar",
|
||||
title: "Director",
|
||||
contain:
|
||||
"Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
},
|
||||
|
||||
{
|
||||
name: "David Natan",
|
||||
|
@ -38,12 +38,12 @@ const otherDirectors = [
|
||||
contain:
|
||||
"Previously served as the treasury director of Taifeng Cultural Communication Co., Ltd where she oversees its financial matters from November 2018 to November 2024. Prior to that, Ms. Cao served as a business manager of Yangfeng Art Exchange Co., Ltd from February 2016 to October 2018. From March 2011 to January 2016, she served as the treasury officer of financial department of Suzhou Industrial Park Xinfushida Plastic Profile Products Co., Ltd.",
|
||||
},
|
||||
// {
|
||||
// name: "David E. Lazar",
|
||||
// title: "Director",
|
||||
// contain:
|
||||
// "Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
// },
|
||||
{
|
||||
name: "David E. Lazar",
|
||||
title: "Director",
|
||||
contain:
|
||||
"Served as the Chief Executive Officer of OpGen, Inc., a precision medicine company listed on the Nasdaq (OPGN) since April 11, 2024, where he also servs as a director and board chairman, beginning on March 25, 2024. Mr. Lazar served as the Chief Executive Officer of Titan Pharmaceuticals Inc. listed on the Nasdaq (TTNP) from August 2022 through April 11, 2024, where he also served as a director and board chairman from August 2022 until October 2023. He has also served as the CEO of Custodian Ventures LLC, a company which specializes in assisting distressed public companies through custodianship, since February 2018, and Activist Investing LLC, an actively managed private investment fund, since March 2018. Previously, Mr. Lazar served as Managing Partner at Zenith Partners International Inc., a boutique consulting firm, from July 2012 to April 2018. In his role as Chief Executive Officer of Custodian Ventures LLC, Mr. Lazar has successfully served as a custodian to numerous public companies across a wide range of industries.",
|
||||
},
|
||||
|
||||
{
|
||||
name: "David Natan",
|
||||
|
@ -33,13 +33,11 @@
|
||||
<div class="table-container">
|
||||
<n-data-table
|
||||
:columns="columns"
|
||||
:loading="state.tableLoading"
|
||||
:data="state.tableData"
|
||||
:data="paginatedData"
|
||||
:pagination="false"
|
||||
:bordered="false"
|
||||
:size="'medium'"
|
||||
:row-key="(row) => row.idx"
|
||||
@update:sorter="handleSort"
|
||||
/>
|
||||
|
||||
<!-- 分页器 -->
|
||||
@ -49,7 +47,7 @@
|
||||
v-model:page-size="state.pageSize"
|
||||
show-size-picker
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:item-count="filteredData.length"
|
||||
:page-sizes="[10, 25, 50]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
@ -64,106 +62,49 @@
|
||||
|
||||
<div class="pagination-info">
|
||||
Displaying {{ startIndex }} - {{ endIndex }} of
|
||||
{{ state.total }} results
|
||||
{{ filteredData.length }} results
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, computed, h, onMounted } from "vue";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
// 使用 reactive 管理所有状态
|
||||
const state = reactive({
|
||||
selectedYear: null,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
total: 0,
|
||||
sortParams: {},
|
||||
|
||||
// 年份选项
|
||||
yearOptions: [
|
||||
{ label: "- Any -", value: null },
|
||||
{
|
||||
label: "2025",
|
||||
value: "2025",
|
||||
},
|
||||
{
|
||||
label: "2024",
|
||||
value: "2024",
|
||||
},
|
||||
{
|
||||
label: "2023",
|
||||
value: "2023",
|
||||
},
|
||||
{
|
||||
label: "2022",
|
||||
value: "2022",
|
||||
},
|
||||
{
|
||||
label: "2021",
|
||||
value: "2021",
|
||||
},
|
||||
{
|
||||
label: "2020",
|
||||
value: "2020",
|
||||
},
|
||||
{
|
||||
label: "2019",
|
||||
value: "2019",
|
||||
},
|
||||
{
|
||||
label: "2018",
|
||||
value: "2018",
|
||||
},
|
||||
{
|
||||
label: "2017",
|
||||
value: "2017",
|
||||
},
|
||||
{
|
||||
label: "2016",
|
||||
value: "2016",
|
||||
},
|
||||
{
|
||||
label: "2015",
|
||||
value: "2015",
|
||||
},
|
||||
{
|
||||
label: "2014",
|
||||
value: "2014",
|
||||
},
|
||||
{
|
||||
label: "2013",
|
||||
value: "2013",
|
||||
},
|
||||
{
|
||||
label: "2012",
|
||||
value: "2012",
|
||||
},
|
||||
{
|
||||
label: "2011",
|
||||
value: "2011",
|
||||
},
|
||||
{
|
||||
label: "2010",
|
||||
value: "2010",
|
||||
},
|
||||
{
|
||||
label: "2009",
|
||||
value: "2009",
|
||||
},
|
||||
{ label: "2025", value: 2025 },
|
||||
{ label: "2024", value: 2024 },
|
||||
{ label: "2023", value: 2023 },
|
||||
{ label: "2022", value: 2022 },
|
||||
{ label: "2021", value: 2021 },
|
||||
{ label: "2020", value: 2020 },
|
||||
{ label: "2019", value: 2019 },
|
||||
{ label: "2018", value: 2018 },
|
||||
{ label: "2017", value: 2017 },
|
||||
{ label: "2016", value: 2016 },
|
||||
{ label: "2015", value: 2015 },
|
||||
{ label: "2014", value: 2014 },
|
||||
{ label: "2013", value: 2013 },
|
||||
{ label: "2012", value: 2012 },
|
||||
{ label: "2011", value: 2011 },
|
||||
{ label: "2010", value: 2010 },
|
||||
{ label: "2009", value: 2009 },
|
||||
],
|
||||
|
||||
// 每页条数选项
|
||||
@ -172,8 +113,12 @@ const state = reactive({
|
||||
{ label: "25", value: 25 },
|
||||
{ label: "50", value: 50 },
|
||||
],
|
||||
});
|
||||
|
||||
// SEC文件数据
|
||||
secFilingsData: [],
|
||||
});
|
||||
onMounted(() => {
|
||||
// 月份名称映射
|
||||
const monthNames = [
|
||||
"Jan",
|
||||
"Feb",
|
||||
@ -188,27 +133,15 @@ const monthNames = [
|
||||
"Nov",
|
||||
"Dec",
|
||||
];
|
||||
onMounted(() => {
|
||||
getListData();
|
||||
});
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
year: state.selectedYear,
|
||||
};
|
||||
Object.assign(params, state.sortParams);
|
||||
state.tableLoading = true;
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let resData = res.data.data?.data || [];
|
||||
resData.forEach((item) => {
|
||||
if (item.filingDate) {
|
||||
|
||||
state.secFilingsData = fileList.map((item, index) => {
|
||||
// 从 filingDate 中提取年份,支持两种格式:
|
||||
// 1. "Feb 04, 2019" 格式(英文)
|
||||
// 2. "2025-10-24" 格式(ISO格式)转换为英文格式
|
||||
let year = null;
|
||||
let filingDate = item.filingDate;
|
||||
let formattedDate = item.filingDate;
|
||||
|
||||
if (item.filingDate) {
|
||||
if (item.filingDate.includes(", ")) {
|
||||
// "Feb 04, 2019" 格式,已经是英文格式,保持不变
|
||||
year = parseInt(item.filingDate.split(", ")[1]);
|
||||
@ -222,37 +155,29 @@ const getListData = async () => {
|
||||
year = yearPart;
|
||||
const monthName = monthNames[monthPart - 1]; // 月份从1开始,数组从0开始
|
||||
const dayFormatted = dayPart.toString().padStart(2, "0");
|
||||
filingDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
item.year = year;
|
||||
item.filingDate = filingDate;
|
||||
item.filing_date = filingDate;
|
||||
formattedDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
formattedDate: formattedDate, // 更新为统一的英文格式
|
||||
year: year,
|
||||
};
|
||||
});
|
||||
});
|
||||
state.tableData = resData;
|
||||
state.total = res.data.data?.total;
|
||||
}
|
||||
state.tableLoading = false;
|
||||
};
|
||||
const handleSort = (sortData) => {
|
||||
state.sortParams = {};
|
||||
if (sortData.order !== false) {
|
||||
state.sortParams["sortField"] = sortData.columnKey;
|
||||
state.sortParams["sortOrder"] = sortData.order.replace("end", "");
|
||||
}
|
||||
getListData();
|
||||
};
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: "Filing Date",
|
||||
key: "filing_date",
|
||||
key: "formattedDate",
|
||||
sorter: "default",
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: "Form",
|
||||
key: "form",
|
||||
sorter: "default",
|
||||
width: 120,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -269,7 +194,7 @@ const columns = [
|
||||
router.push({
|
||||
path: "/secfilingsDefail",
|
||||
query: {
|
||||
filingKey: row.filingKey,
|
||||
filingDate: row.filingDate,
|
||||
},
|
||||
});
|
||||
},
|
||||
@ -287,13 +212,14 @@ const columns = [
|
||||
{
|
||||
title: "Description",
|
||||
key: "description",
|
||||
sorter: "default",
|
||||
ellipsis: {
|
||||
tooltip: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "View",
|
||||
key: "fileLink",
|
||||
key: "view",
|
||||
width: 150,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -305,101 +231,7 @@ const columns = [
|
||||
},
|
||||
},
|
||||
[
|
||||
row.pdfFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.pdfFile, "pdf");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: pdfFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.wordFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.wordFile, "word");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: wordFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.excelFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.excelFile, "excel");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: excelFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.fileLink
|
||||
? h(
|
||||
h(
|
||||
"a",
|
||||
{
|
||||
href: row.fileLink,
|
||||
@ -416,21 +248,43 @@ const columns = [
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: fileLink,
|
||||
src: iconLink,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
),
|
||||
]
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
// 筛选后的数据
|
||||
const filteredData = computed(() => {
|
||||
let data = state.secFilingsData;
|
||||
|
||||
if (state.selectedYear) {
|
||||
data = data.filter((item) => item.year === state.selectedYear);
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
// 分页数据
|
||||
const paginatedData = computed(() => {
|
||||
const start = (state.currentPage - 1) * state.pageSize;
|
||||
const end = start + state.pageSize;
|
||||
return filteredData.value.slice(start, end);
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
return Math.ceil(filteredData.value.length / state.pageSize);
|
||||
});
|
||||
|
||||
// 当前页起始索引
|
||||
const startIndex = computed(() => {
|
||||
return (state.currentPage - 1) * state.pageSize + 1;
|
||||
@ -439,34 +293,24 @@ const startIndex = computed(() => {
|
||||
// 当前页结束索引
|
||||
const endIndex = computed(() => {
|
||||
const end = state.currentPage * state.pageSize;
|
||||
return Math.min(end, state.total);
|
||||
return Math.min(end, filteredData.value.length);
|
||||
});
|
||||
|
||||
// 处理年份变化
|
||||
const handleYearChange = (value) => {
|
||||
state.selectedYear = value;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理页码变化
|
||||
const handlePageChange = (page) => {
|
||||
state.currentPage = page;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理每页条数变化
|
||||
const handlePageSizeChange = (size) => {
|
||||
state.pageSize = size;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -33,13 +33,11 @@
|
||||
<div class="table-container">
|
||||
<n-data-table
|
||||
:columns="columns"
|
||||
:loading="state.tableLoading"
|
||||
:data="state.tableData"
|
||||
:data="paginatedData"
|
||||
:pagination="false"
|
||||
:bordered="false"
|
||||
:size="'medium'"
|
||||
:row-key="(row) => row.idx"
|
||||
@update:sorter="handleSort"
|
||||
/>
|
||||
|
||||
<!-- 分页器 -->
|
||||
@ -49,7 +47,7 @@
|
||||
v-model:page-size="state.pageSize"
|
||||
show-size-picker
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:item-count="filteredData.length"
|
||||
:page-sizes="[10, 25, 50]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
@ -64,7 +62,7 @@
|
||||
|
||||
<div class="pagination-info">
|
||||
Displaying {{ startIndex }} - {{ endIndex }} of
|
||||
{{ state.total }} results
|
||||
{{ filteredData.length }} results
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -77,94 +75,37 @@ import { reactive, computed, h, onMounted } from "vue";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRouter } from "vue-router";
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
// 使用 reactive 管理所有状态
|
||||
const state = reactive({
|
||||
selectedYear: null,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
total: 0,
|
||||
sortParams: {},
|
||||
|
||||
// 年份选项
|
||||
yearOptions: [
|
||||
{ label: "- Any -", value: null },
|
||||
{
|
||||
label: "2025",
|
||||
value: "2025",
|
||||
},
|
||||
{
|
||||
label: "2024",
|
||||
value: "2024",
|
||||
},
|
||||
{
|
||||
label: "2023",
|
||||
value: "2023",
|
||||
},
|
||||
{
|
||||
label: "2022",
|
||||
value: "2022",
|
||||
},
|
||||
{
|
||||
label: "2021",
|
||||
value: "2021",
|
||||
},
|
||||
{
|
||||
label: "2020",
|
||||
value: "2020",
|
||||
},
|
||||
{
|
||||
label: "2019",
|
||||
value: "2019",
|
||||
},
|
||||
{
|
||||
label: "2018",
|
||||
value: "2018",
|
||||
},
|
||||
{
|
||||
label: "2017",
|
||||
value: "2017",
|
||||
},
|
||||
{
|
||||
label: "2016",
|
||||
value: "2016",
|
||||
},
|
||||
{
|
||||
label: "2015",
|
||||
value: "2015",
|
||||
},
|
||||
{
|
||||
label: "2014",
|
||||
value: "2014",
|
||||
},
|
||||
{
|
||||
label: "2013",
|
||||
value: "2013",
|
||||
},
|
||||
{
|
||||
label: "2012",
|
||||
value: "2012",
|
||||
},
|
||||
{
|
||||
label: "2011",
|
||||
value: "2011",
|
||||
},
|
||||
{
|
||||
label: "2010",
|
||||
value: "2010",
|
||||
},
|
||||
{
|
||||
label: "2009",
|
||||
value: "2009",
|
||||
},
|
||||
{ label: "2025", value: 2025 },
|
||||
{ label: "2024", value: 2024 },
|
||||
{ label: "2023", value: 2023 },
|
||||
{ label: "2022", value: 2022 },
|
||||
{ label: "2021", value: 2021 },
|
||||
{ label: "2020", value: 2020 },
|
||||
{ label: "2019", value: 2019 },
|
||||
{ label: "2018", value: 2018 },
|
||||
{ label: "2017", value: 2017 },
|
||||
{ label: "2016", value: 2016 },
|
||||
{ label: "2015", value: 2015 },
|
||||
{ label: "2014", value: 2014 },
|
||||
{ label: "2013", value: 2013 },
|
||||
{ label: "2012", value: 2012 },
|
||||
{ label: "2011", value: 2011 },
|
||||
{ label: "2010", value: 2010 },
|
||||
{ label: "2009", value: 2009 },
|
||||
],
|
||||
|
||||
// 每页条数选项
|
||||
@ -173,8 +114,12 @@ const state = reactive({
|
||||
{ label: "25", value: 25 },
|
||||
{ label: "50", value: 50 },
|
||||
],
|
||||
});
|
||||
|
||||
// SEC文件数据
|
||||
secFilingsData: [],
|
||||
});
|
||||
onMounted(() => {
|
||||
// 月份名称映射
|
||||
const monthNames = [
|
||||
"Jan",
|
||||
"Feb",
|
||||
@ -189,27 +134,15 @@ const monthNames = [
|
||||
"Nov",
|
||||
"Dec",
|
||||
];
|
||||
onMounted(() => {
|
||||
getListData();
|
||||
});
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
year: state.selectedYear,
|
||||
};
|
||||
Object.assign(params, state.sortParams);
|
||||
state.tableLoading = true;
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let resData = res.data.data?.data || [];
|
||||
resData.forEach((item) => {
|
||||
if (item.filingDate) {
|
||||
|
||||
state.secFilingsData = fileList.map((item, index) => {
|
||||
// 从 filingDate 中提取年份,支持两种格式:
|
||||
// 1. "Feb 04, 2019" 格式(英文)
|
||||
// 2. "2025-10-24" 格式(ISO格式)转换为英文格式
|
||||
let year = null;
|
||||
let filingDate = item.filingDate;
|
||||
let formattedDate = item.filingDate;
|
||||
|
||||
if (item.filingDate) {
|
||||
if (item.filingDate.includes(", ")) {
|
||||
// "Feb 04, 2019" 格式,已经是英文格式,保持不变
|
||||
year = parseInt(item.filingDate.split(", ")[1]);
|
||||
@ -223,37 +156,29 @@ const getListData = async () => {
|
||||
year = yearPart;
|
||||
const monthName = monthNames[monthPart - 1]; // 月份从1开始,数组从0开始
|
||||
const dayFormatted = dayPart.toString().padStart(2, "0");
|
||||
filingDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
item.year = year;
|
||||
item.filingDate = filingDate;
|
||||
item.filing_date = filingDate;
|
||||
formattedDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
formattedDate: formattedDate, // 更新为统一的英文格式
|
||||
year: year,
|
||||
};
|
||||
});
|
||||
});
|
||||
state.tableData = resData;
|
||||
state.total = res.data.data?.total;
|
||||
}
|
||||
state.tableLoading = false;
|
||||
};
|
||||
const handleSort = (sortData) => {
|
||||
state.sortParams = {};
|
||||
if (sortData.order !== false) {
|
||||
state.sortParams["sortField"] = sortData.columnKey;
|
||||
state.sortParams["sortOrder"] = sortData.order.replace("end", "");
|
||||
}
|
||||
getListData();
|
||||
};
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: "Filing Date",
|
||||
key: "filing_date",
|
||||
key: "formattedDate",
|
||||
sorter: "default",
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: "Form",
|
||||
key: "form",
|
||||
sorter: "default",
|
||||
width: 120,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -270,7 +195,7 @@ const columns = [
|
||||
router.push({
|
||||
path: "/secfilingsDefail",
|
||||
query: {
|
||||
filingKey: row.filingKey,
|
||||
idx: row.idx,
|
||||
},
|
||||
});
|
||||
},
|
||||
@ -288,13 +213,14 @@ const columns = [
|
||||
{
|
||||
title: "Description",
|
||||
key: "description",
|
||||
sorter: "default",
|
||||
ellipsis: {
|
||||
tooltip: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "View",
|
||||
key: "fileLink",
|
||||
key: "view",
|
||||
width: 150,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -306,101 +232,7 @@ const columns = [
|
||||
},
|
||||
},
|
||||
[
|
||||
row.pdfFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.pdfFile, "pdf");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: pdfFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.wordFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.wordFile, "word");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: wordFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.excelFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.excelFile, "excel");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: excelFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.fileLink
|
||||
? h(
|
||||
h(
|
||||
"a",
|
||||
{
|
||||
href: row.fileLink,
|
||||
@ -417,21 +249,43 @@ const columns = [
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: fileLink,
|
||||
src: iconLink,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
),
|
||||
]
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
// 筛选后的数据
|
||||
const filteredData = computed(() => {
|
||||
let data = state.secFilingsData;
|
||||
|
||||
if (state.selectedYear) {
|
||||
data = data.filter((item) => item.year === state.selectedYear);
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
// 分页数据
|
||||
const paginatedData = computed(() => {
|
||||
const start = (state.currentPage - 1) * state.pageSize;
|
||||
const end = start + state.pageSize;
|
||||
return filteredData.value.slice(start, end);
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
return Math.ceil(filteredData.value.length / state.pageSize);
|
||||
});
|
||||
|
||||
// 当前页起始索引
|
||||
const startIndex = computed(() => {
|
||||
return (state.currentPage - 1) * state.pageSize + 1;
|
||||
@ -440,34 +294,24 @@ const startIndex = computed(() => {
|
||||
// 当前页结束索引
|
||||
const endIndex = computed(() => {
|
||||
const end = state.currentPage * state.pageSize;
|
||||
return Math.min(end, state.total);
|
||||
return Math.min(end, filteredData.value.length);
|
||||
});
|
||||
|
||||
// 处理年份变化
|
||||
const handleYearChange = (value) => {
|
||||
state.selectedYear = value;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理页码变化
|
||||
const handlePageChange = (page) => {
|
||||
state.currentPage = page;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理每页条数变化
|
||||
const handlePageSizeChange = (size) => {
|
||||
state.pageSize = size;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -33,11 +33,9 @@
|
||||
<div class="table-container">
|
||||
<n-data-table
|
||||
:columns="columns"
|
||||
:loading="state.tableLoading"
|
||||
:data="state.tableData"
|
||||
:data="paginatedData"
|
||||
:pagination="false"
|
||||
:row-key="(row) => row.idx"
|
||||
@update:sorter="handleSort"
|
||||
:bordered="false"
|
||||
:single-line="false"
|
||||
:scroll-x="600"
|
||||
@ -49,7 +47,7 @@
|
||||
v-model:page="state.currentPage"
|
||||
v-model:page-size="state.pageSize"
|
||||
show-size-picker
|
||||
:item-count="state.total"
|
||||
:item-count="filteredData.length"
|
||||
:page-sizes="[10, 25, 50]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
@ -64,7 +62,7 @@
|
||||
|
||||
<div class="pagination-info mt-[40px]">
|
||||
Displaying {{ startIndex }} - {{ endIndex }} of
|
||||
{{ state.total }} results
|
||||
{{ filteredData.length }} results
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -77,94 +75,36 @@ import { reactive, computed, h, onMounted } from "vue";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
// 使用 reactive 管理所有状态
|
||||
const state = reactive({
|
||||
selectedYear: null,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
total: 0,
|
||||
sortParams: {},
|
||||
|
||||
// 年份选项
|
||||
yearOptions: [
|
||||
{ label: "- Any -", value: null },
|
||||
{
|
||||
label: "2025",
|
||||
value: "2025",
|
||||
},
|
||||
{
|
||||
label: "2024",
|
||||
value: "2024",
|
||||
},
|
||||
{
|
||||
label: "2023",
|
||||
value: "2023",
|
||||
},
|
||||
{
|
||||
label: "2022",
|
||||
value: "2022",
|
||||
},
|
||||
{
|
||||
label: "2021",
|
||||
value: "2021",
|
||||
},
|
||||
{
|
||||
label: "2020",
|
||||
value: "2020",
|
||||
},
|
||||
{
|
||||
label: "2019",
|
||||
value: "2019",
|
||||
},
|
||||
{
|
||||
label: "2018",
|
||||
value: "2018",
|
||||
},
|
||||
{
|
||||
label: "2017",
|
||||
value: "2017",
|
||||
},
|
||||
{
|
||||
label: "2016",
|
||||
value: "2016",
|
||||
},
|
||||
{
|
||||
label: "2015",
|
||||
value: "2015",
|
||||
},
|
||||
{
|
||||
label: "2014",
|
||||
value: "2014",
|
||||
},
|
||||
{
|
||||
label: "2013",
|
||||
value: "2013",
|
||||
},
|
||||
{
|
||||
label: "2012",
|
||||
value: "2012",
|
||||
},
|
||||
{
|
||||
label: "2011",
|
||||
value: "2011",
|
||||
},
|
||||
{
|
||||
label: "2010",
|
||||
value: "2010",
|
||||
},
|
||||
{
|
||||
label: "2009",
|
||||
value: "2009",
|
||||
},
|
||||
{ label: "2025", value: 2025 },
|
||||
{ label: "2024", value: 2024 },
|
||||
{ label: "2023", value: 2023 },
|
||||
{ label: "2022", value: 2022 },
|
||||
{ label: "2021", value: 2021 },
|
||||
{ label: "2020", value: 2020 },
|
||||
{ label: "2019", value: 2019 },
|
||||
{ label: "2018", value: 2018 },
|
||||
{ label: "2017", value: 2017 },
|
||||
{ label: "2016", value: 2016 },
|
||||
{ label: "2015", value: 2015 },
|
||||
{ label: "2014", value: 2014 },
|
||||
{ label: "2013", value: 2013 },
|
||||
{ label: "2012", value: 2012 },
|
||||
{ label: "2011", value: 2011 },
|
||||
{ label: "2010", value: 2010 },
|
||||
{ label: "2009", value: 2009 },
|
||||
],
|
||||
|
||||
// 每页条数选项
|
||||
@ -173,8 +113,12 @@ const state = reactive({
|
||||
{ label: "25", value: 25 },
|
||||
{ label: "50", value: 50 },
|
||||
],
|
||||
});
|
||||
|
||||
// SEC文件数据
|
||||
secFilingsData: [],
|
||||
});
|
||||
onMounted(() => {
|
||||
// 月份名称映射
|
||||
const monthNames = [
|
||||
"Jan",
|
||||
"Feb",
|
||||
@ -189,27 +133,15 @@ const monthNames = [
|
||||
"Nov",
|
||||
"Dec",
|
||||
];
|
||||
onMounted(() => {
|
||||
getListData();
|
||||
});
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
year: state.selectedYear,
|
||||
};
|
||||
Object.assign(params, state.sortParams);
|
||||
state.tableLoading = true;
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let resData = res.data.data?.data || [];
|
||||
resData.forEach((item) => {
|
||||
if (item.filingDate) {
|
||||
|
||||
state.secFilingsData = fileList.map((item, index) => {
|
||||
// 从 filingDate 中提取年份,支持两种格式:
|
||||
// 1. "Feb 04, 2019" 格式(英文)
|
||||
// 2. "2025-10-24" 格式(ISO格式)转换为英文格式
|
||||
let year = null;
|
||||
let filingDate = item.filingDate;
|
||||
let formattedDate = item.filingDate;
|
||||
|
||||
if (item.filingDate) {
|
||||
if (item.filingDate.includes(", ")) {
|
||||
// "Feb 04, 2019" 格式,已经是英文格式,保持不变
|
||||
year = parseInt(item.filingDate.split(", ")[1]);
|
||||
@ -223,37 +155,29 @@ const getListData = async () => {
|
||||
year = yearPart;
|
||||
const monthName = monthNames[monthPart - 1]; // 月份从1开始,数组从0开始
|
||||
const dayFormatted = dayPart.toString().padStart(2, "0");
|
||||
filingDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
item.year = year;
|
||||
item.filingDate = filingDate;
|
||||
item.filing_date = filingDate;
|
||||
formattedDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
formattedDate: formattedDate, // 更新为统一的英文格式
|
||||
year: year,
|
||||
};
|
||||
});
|
||||
});
|
||||
state.tableData = resData;
|
||||
state.total = res.data.data?.total;
|
||||
}
|
||||
state.tableLoading = false;
|
||||
};
|
||||
const handleSort = (sortData) => {
|
||||
state.sortParams = {};
|
||||
if (sortData.order !== false) {
|
||||
state.sortParams["sortField"] = sortData.columnKey;
|
||||
state.sortParams["sortOrder"] = sortData.order.replace("end", "");
|
||||
}
|
||||
getListData();
|
||||
};
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: "Filing Date",
|
||||
key: "filing_date",
|
||||
key: "formattedDate",
|
||||
sorter: "default",
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: "Form",
|
||||
key: "form",
|
||||
sorter: "default",
|
||||
width: 120,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -270,7 +194,7 @@ const columns = [
|
||||
router.push({
|
||||
path: "/secfilingsDefail",
|
||||
query: {
|
||||
filingKey: row.filingKey,
|
||||
filingDate: row.filingDate,
|
||||
},
|
||||
});
|
||||
},
|
||||
@ -288,14 +212,15 @@ const columns = [
|
||||
{
|
||||
title: "Description",
|
||||
key: "description",
|
||||
sorter: "default",
|
||||
ellipsis: {
|
||||
tooltip: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "View",
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
key: "view",
|
||||
width: 80,
|
||||
render: (row) => {
|
||||
return h(
|
||||
"div",
|
||||
@ -306,101 +231,7 @@ const columns = [
|
||||
},
|
||||
},
|
||||
[
|
||||
row.pdfFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.pdfFile, "pdf");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: pdfFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.wordFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.wordFile, "word");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: wordFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.excelFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.excelFile, "excel");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: excelFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.fileLink
|
||||
? h(
|
||||
h(
|
||||
"a",
|
||||
{
|
||||
href: row.fileLink,
|
||||
@ -417,21 +248,43 @@ const columns = [
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: fileLink,
|
||||
src: iconLink,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
),
|
||||
]
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
// 筛选后的数据
|
||||
const filteredData = computed(() => {
|
||||
let data = state.secFilingsData;
|
||||
|
||||
if (state.selectedYear) {
|
||||
data = data.filter((item) => item.year === state.selectedYear);
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
// 分页数据
|
||||
const paginatedData = computed(() => {
|
||||
const start = (state.currentPage - 1) * state.pageSize;
|
||||
const end = start + state.pageSize;
|
||||
return filteredData.value.slice(start, end);
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
return Math.ceil(filteredData.value.length / state.pageSize);
|
||||
});
|
||||
|
||||
// 当前页起始索引
|
||||
const startIndex = computed(() => {
|
||||
return (state.currentPage - 1) * state.pageSize + 1;
|
||||
@ -440,34 +293,24 @@ const startIndex = computed(() => {
|
||||
// 当前页结束索引
|
||||
const endIndex = computed(() => {
|
||||
const end = state.currentPage * state.pageSize;
|
||||
return Math.min(end, state.total);
|
||||
return Math.min(end, filteredData.value.length);
|
||||
});
|
||||
|
||||
// 处理年份变化
|
||||
const handleYearChange = (value) => {
|
||||
state.selectedYear = value;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理页码变化
|
||||
const handlePageChange = (page) => {
|
||||
state.currentPage = page;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理每页条数变化
|
||||
const handlePageSizeChange = (size) => {
|
||||
state.pageSize = size;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -33,13 +33,11 @@
|
||||
<div class="table-container">
|
||||
<n-data-table
|
||||
:columns="columns"
|
||||
:loading="state.tableLoading"
|
||||
:data="state.tableData"
|
||||
:data="paginatedData"
|
||||
:pagination="false"
|
||||
:bordered="false"
|
||||
:size="'medium'"
|
||||
:row-key="(row) => row.idx"
|
||||
@update:sorter="handleSort"
|
||||
/>
|
||||
|
||||
<!-- 分页器 -->
|
||||
@ -50,7 +48,7 @@
|
||||
v-model:page-size="state.pageSize"
|
||||
show-size-picker
|
||||
show-quick-jumper
|
||||
:item-count="state.total"
|
||||
:item-count="filteredData.length"
|
||||
:page-sizes="[10, 25, 50]"
|
||||
@update:page="handlePageChange"
|
||||
@update:page-size="handlePageSizeChange"
|
||||
@ -65,7 +63,7 @@
|
||||
|
||||
<div class="pagination-info w-full mt-[20px]">
|
||||
Displaying {{ startIndex }} - {{ endIndex }} of
|
||||
{{ state.total }} results
|
||||
{{ filteredData.length }} results
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -78,94 +76,36 @@ import { reactive, computed, h, onMounted } from "vue";
|
||||
import { NSelect, NDataTable, NPagination, NButton, NIcon } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
// 使用 reactive 管理所有状态
|
||||
const state = reactive({
|
||||
selectedYear: null,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
total: 0,
|
||||
sortParams: {},
|
||||
|
||||
// 年份选项
|
||||
yearOptions: [
|
||||
{ label: "- Any -", value: null },
|
||||
{
|
||||
label: "2025",
|
||||
value: "2025",
|
||||
},
|
||||
{
|
||||
label: "2024",
|
||||
value: "2024",
|
||||
},
|
||||
{
|
||||
label: "2023",
|
||||
value: "2023",
|
||||
},
|
||||
{
|
||||
label: "2022",
|
||||
value: "2022",
|
||||
},
|
||||
{
|
||||
label: "2021",
|
||||
value: "2021",
|
||||
},
|
||||
{
|
||||
label: "2020",
|
||||
value: "2020",
|
||||
},
|
||||
{
|
||||
label: "2019",
|
||||
value: "2019",
|
||||
},
|
||||
{
|
||||
label: "2018",
|
||||
value: "2018",
|
||||
},
|
||||
{
|
||||
label: "2017",
|
||||
value: "2017",
|
||||
},
|
||||
{
|
||||
label: "2016",
|
||||
value: "2016",
|
||||
},
|
||||
{
|
||||
label: "2015",
|
||||
value: "2015",
|
||||
},
|
||||
{
|
||||
label: "2014",
|
||||
value: "2014",
|
||||
},
|
||||
{
|
||||
label: "2013",
|
||||
value: "2013",
|
||||
},
|
||||
{
|
||||
label: "2012",
|
||||
value: "2012",
|
||||
},
|
||||
{
|
||||
label: "2011",
|
||||
value: "2011",
|
||||
},
|
||||
{
|
||||
label: "2010",
|
||||
value: "2010",
|
||||
},
|
||||
{
|
||||
label: "2009",
|
||||
value: "2009",
|
||||
},
|
||||
{ label: "2025", value: 2025 },
|
||||
{ label: "2024", value: 2024 },
|
||||
{ label: "2023", value: 2023 },
|
||||
{ label: "2022", value: 2022 },
|
||||
{ label: "2021", value: 2021 },
|
||||
{ label: "2020", value: 2020 },
|
||||
{ label: "2019", value: 2019 },
|
||||
{ label: "2018", value: 2018 },
|
||||
{ label: "2017", value: 2017 },
|
||||
{ label: "2016", value: 2016 },
|
||||
{ label: "2015", value: 2015 },
|
||||
{ label: "2014", value: 2014 },
|
||||
{ label: "2013", value: 2013 },
|
||||
{ label: "2012", value: 2012 },
|
||||
{ label: "2011", value: 2011 },
|
||||
{ label: "2010", value: 2010 },
|
||||
{ label: "2009", value: 2009 },
|
||||
],
|
||||
|
||||
// 每页条数选项
|
||||
@ -174,8 +114,12 @@ const state = reactive({
|
||||
{ label: "25", value: 25 },
|
||||
{ label: "50", value: 50 },
|
||||
],
|
||||
});
|
||||
|
||||
// SEC文件数据
|
||||
secFilingsData: [],
|
||||
});
|
||||
onMounted(() => {
|
||||
// 月份名称映射
|
||||
const monthNames = [
|
||||
"Jan",
|
||||
"Feb",
|
||||
@ -190,27 +134,15 @@ const monthNames = [
|
||||
"Nov",
|
||||
"Dec",
|
||||
];
|
||||
onMounted(() => {
|
||||
getListData();
|
||||
});
|
||||
import axios from "axios";
|
||||
const getListData = async () => {
|
||||
state.tableData = [];
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/list";
|
||||
let params = {
|
||||
page: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
year: state.selectedYear,
|
||||
};
|
||||
Object.assign(params, state.sortParams);
|
||||
state.tableLoading = true;
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let resData = res.data.data?.data || [];
|
||||
resData.forEach((item) => {
|
||||
if (item.filingDate) {
|
||||
|
||||
state.secFilingsData = fileList.map((item, index) => {
|
||||
// 从 filingDate 中提取年份,支持两种格式:
|
||||
// 1. "Feb 04, 2019" 格式(英文)
|
||||
// 2. "2025-10-24" 格式(ISO格式)转换为英文格式
|
||||
let year = null;
|
||||
let filingDate = item.filingDate;
|
||||
let formattedDate = item.filingDate;
|
||||
|
||||
if (item.filingDate) {
|
||||
if (item.filingDate.includes(", ")) {
|
||||
// "Feb 04, 2019" 格式,已经是英文格式,保持不变
|
||||
year = parseInt(item.filingDate.split(", ")[1]);
|
||||
@ -224,37 +156,29 @@ const getListData = async () => {
|
||||
year = yearPart;
|
||||
const monthName = monthNames[monthPart - 1]; // 月份从1开始,数组从0开始
|
||||
const dayFormatted = dayPart.toString().padStart(2, "0");
|
||||
filingDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
item.year = year;
|
||||
item.filingDate = filingDate;
|
||||
item.filing_date = filingDate;
|
||||
formattedDate = `${monthName} ${dayFormatted}, ${yearPart}`;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
formattedDate: formattedDate, // 更新为统一的英文格式
|
||||
year: year,
|
||||
};
|
||||
});
|
||||
});
|
||||
state.tableData = resData;
|
||||
state.total = res.data.data?.total;
|
||||
}
|
||||
state.tableLoading = false;
|
||||
};
|
||||
const handleSort = (sortData) => {
|
||||
state.sortParams = {};
|
||||
if (sortData.order !== false) {
|
||||
state.sortParams["sortField"] = sortData.columnKey;
|
||||
state.sortParams["sortOrder"] = sortData.order.replace("end", "");
|
||||
}
|
||||
getListData();
|
||||
};
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: "Filing Date",
|
||||
key: "filing_date",
|
||||
key: "formattedDate",
|
||||
sorter: "default",
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: "Form",
|
||||
key: "form",
|
||||
sorter: "default",
|
||||
width: 120,
|
||||
render: (row) => {
|
||||
return h(
|
||||
@ -271,7 +195,7 @@ const columns = [
|
||||
router.push({
|
||||
path: "/secfilingsDefail",
|
||||
query: {
|
||||
filingKey: row.filingKey,
|
||||
filingDate: row.filingDate,
|
||||
},
|
||||
});
|
||||
},
|
||||
@ -289,14 +213,14 @@ const columns = [
|
||||
{
|
||||
title: "Description",
|
||||
key: "description",
|
||||
sorter: "default",
|
||||
ellipsis: {
|
||||
tooltip: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "View",
|
||||
key: "fileLink",
|
||||
width: 150,
|
||||
key: "view",
|
||||
render: (row) => {
|
||||
return h(
|
||||
"div",
|
||||
@ -307,101 +231,7 @@ const columns = [
|
||||
},
|
||||
},
|
||||
[
|
||||
row.pdfFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.pdfFile, "pdf");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: pdfFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.wordFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.wordFile, "word");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: wordFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.excelFile
|
||||
? h(
|
||||
"a",
|
||||
{
|
||||
href: "javascript:void(0)",
|
||||
style: {
|
||||
color: "#0078d7",
|
||||
textDecoration: "none",
|
||||
fontSize: "12px",
|
||||
},
|
||||
onClick: (e) => {
|
||||
e.preventDefault();
|
||||
handleViewDocument(row.excelFile, "excel");
|
||||
},
|
||||
onMouseover: (e) => {
|
||||
e.target.style.textDecoration = "underline";
|
||||
},
|
||||
onMouseout: (e) => {
|
||||
e.target.style.textDecoration = "none";
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: excelFile,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
row.fileLink
|
||||
? h(
|
||||
h(
|
||||
"a",
|
||||
{
|
||||
href: row.fileLink,
|
||||
@ -418,21 +248,43 @@ const columns = [
|
||||
},
|
||||
},
|
||||
h("img", {
|
||||
src: fileLink,
|
||||
src: iconLink,
|
||||
alt: "link",
|
||||
style: {
|
||||
width: "24px",
|
||||
height: "24px",
|
||||
},
|
||||
})
|
||||
)
|
||||
: null,
|
||||
),
|
||||
]
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
// 筛选后的数据
|
||||
const filteredData = computed(() => {
|
||||
let data = state.secFilingsData;
|
||||
|
||||
if (state.selectedYear) {
|
||||
data = data.filter((item) => item.year === state.selectedYear);
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
// 分页数据
|
||||
const paginatedData = computed(() => {
|
||||
const start = (state.currentPage - 1) * state.pageSize;
|
||||
const end = start + state.pageSize;
|
||||
return filteredData.value.slice(start, end);
|
||||
});
|
||||
|
||||
// 总页数
|
||||
const totalPages = computed(() => {
|
||||
return Math.ceil(filteredData.value.length / state.pageSize);
|
||||
});
|
||||
|
||||
// 当前页起始索引
|
||||
const startIndex = computed(() => {
|
||||
return (state.currentPage - 1) * state.pageSize + 1;
|
||||
@ -441,34 +293,24 @@ const startIndex = computed(() => {
|
||||
// 当前页结束索引
|
||||
const endIndex = computed(() => {
|
||||
const end = state.currentPage * state.pageSize;
|
||||
return Math.min(end, state.total);
|
||||
return Math.min(end, filteredData.value.length);
|
||||
});
|
||||
|
||||
// 处理年份变化
|
||||
const handleYearChange = (value) => {
|
||||
state.selectedYear = value;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理页码变化
|
||||
const handlePageChange = (page) => {
|
||||
state.currentPage = page;
|
||||
getListData();
|
||||
};
|
||||
|
||||
// 处理每页条数变化
|
||||
const handlePageSizeChange = (size) => {
|
||||
state.pageSize = size;
|
||||
state.currentPage = 1;
|
||||
getListData();
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="details-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Form:</span>
|
||||
<a :href="filingData.fileLink" class="detail-value link">{{
|
||||
<a :href="filingData.htmlLink" class="detail-value link">{{
|
||||
filingData.form
|
||||
}}</a>
|
||||
</div>
|
||||
@ -37,39 +37,9 @@
|
||||
<div class="section">
|
||||
<h2 class="section-title">Filing Formats</h2>
|
||||
<div class="formats-list">
|
||||
<div class="format-item" v-if="filingData.pdfFile">
|
||||
<img :src="pdfFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.pdfFile, 'pdf')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.wordFile">
|
||||
<img :src="wordFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.wordFile, 'word')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.excelFile">
|
||||
<img :src="excelFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.excelFile, 'excel')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.fileLink">
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.fileLink" class="format-link" target="_blank"
|
||||
<div class="format-item">
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.htmlLink" class="format-link" target="_blank"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
@ -90,7 +60,7 @@
|
||||
v-for="(item, idx) in filingData.dataFiles"
|
||||
:key="idx"
|
||||
>
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="item.fileUrl" class="format-link" target="_blank">{{
|
||||
item.description
|
||||
}}</a>
|
||||
@ -103,12 +73,8 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
// 这里可以根据路由参数或props获取具体的文件详情
|
||||
@ -118,48 +84,27 @@ const filingData = ref({
|
||||
formDescription: "",
|
||||
company: "",
|
||||
issuer: "",
|
||||
fileLink: "#",
|
||||
htmlLink: "#",
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
const { filingKey } = route.query;
|
||||
getPageData(filingKey);
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let file = res.data.data.data;
|
||||
console.log(file);
|
||||
const { idx } = route.query;
|
||||
const file = fileList.find((item) => item.idx == idx);
|
||||
if (file) {
|
||||
filingData.value = {
|
||||
form: file.form,
|
||||
filingDate: file.filingDate,
|
||||
formDescription: file.formDescription,
|
||||
fileLink: file.fileLink || "",
|
||||
pdfFile: file.pdfFile || "",
|
||||
wordFile: file.wordFile || "",
|
||||
excelFile: file.excelFile || "",
|
||||
htmlLink: file.fileLink || "#",
|
||||
dataFiles: file.dataFiles || [],
|
||||
company: "FiEE, Inc. ",
|
||||
issuer: "FiEE, Inc. ",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
// console.log(filingData.value);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="details-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Form:</span>
|
||||
<a :href="filingData.fileLink" class="detail-value link">{{
|
||||
<a :href="filingData.htmlLink" class="detail-value link">{{
|
||||
filingData.form
|
||||
}}</a>
|
||||
</div>
|
||||
@ -37,39 +37,9 @@
|
||||
<div class="section">
|
||||
<h2 class="section-title">Filing Formats</h2>
|
||||
<div class="formats-list">
|
||||
<div class="format-item" v-if="filingData.pdfFile">
|
||||
<img :src="pdfFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.pdfFile, 'pdf')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.wordFile">
|
||||
<img :src="wordFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.wordFile, 'word')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.excelFile">
|
||||
<img :src="excelFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.excelFile, 'excel')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.fileLink">
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.fileLink" class="format-link" target="_blank"
|
||||
<div class="format-item">
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.htmlLink" class="format-link" target="_blank"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
@ -90,7 +60,7 @@
|
||||
v-for="(item, idx) in filingData.dataFiles"
|
||||
:key="idx"
|
||||
>
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="item.fileUrl" class="format-link" target="_blank">{{
|
||||
item.description
|
||||
}}</a>
|
||||
@ -103,12 +73,8 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
// 这里可以根据路由参数或props获取具体的文件详情
|
||||
@ -118,48 +84,26 @@ const filingData = ref({
|
||||
formDescription: "",
|
||||
company: "",
|
||||
issuer: "",
|
||||
fileLink: "#",
|
||||
htmlLink: "#",
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
const { filingKey } = route.query;
|
||||
getPageData(filingKey);
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let file = res.data.data.data;
|
||||
console.log(file);
|
||||
const { idx } = route.query;
|
||||
const file = fileList.find((item) => item.idx == idx);
|
||||
if (file) {
|
||||
filingData.value = {
|
||||
form: file.form,
|
||||
filingDate: file.filingDate,
|
||||
formDescription: file.formDescription,
|
||||
fileLink: file.fileLink || "",
|
||||
pdfFile: file.pdfFile || "",
|
||||
wordFile: file.wordFile || "",
|
||||
excelFile: file.excelFile || "",
|
||||
htmlLink: file.fileLink || "#",
|
||||
dataFiles: file.dataFiles || [],
|
||||
company: "FiEE, Inc. ",
|
||||
issuer: "FiEE, Inc. ",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="details-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Form:</span>
|
||||
<a :href="filingData.fileLink" class="detail-value link">{{
|
||||
<a :href="filingData.htmlLink" class="detail-value link">{{
|
||||
filingData.form
|
||||
}}</a>
|
||||
</div>
|
||||
@ -37,39 +37,9 @@
|
||||
<div class="section">
|
||||
<h2 class="section-title">Filing Formats</h2>
|
||||
<div class="formats-list">
|
||||
<div class="format-item" v-if="filingData.pdfFile">
|
||||
<img :src="pdfFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.pdfFile, 'pdf')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.wordFile">
|
||||
<img :src="wordFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.wordFile, 'word')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.excelFile">
|
||||
<img :src="excelFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.excelFile, 'excel')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.fileLink">
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.fileLink" class="format-link" target="_blank"
|
||||
<div class="format-item">
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.htmlLink" class="format-link" target="_blank"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
@ -90,7 +60,7 @@
|
||||
v-for="(item, idx) in filingData.dataFiles"
|
||||
:key="idx"
|
||||
>
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="item.fileUrl" class="format-link" target="_blank">{{
|
||||
item.description
|
||||
}}</a>
|
||||
@ -103,12 +73,8 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
// 这里可以根据路由参数或props获取具体的文件详情
|
||||
@ -118,48 +84,27 @@ const filingData = ref({
|
||||
formDescription: "",
|
||||
company: "",
|
||||
issuer: "",
|
||||
fileLink: "#",
|
||||
htmlLink: "#",
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
const { filingKey } = route.query;
|
||||
getPageData(filingKey);
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let file = res.data.data.data;
|
||||
console.log(file);
|
||||
const { idx } = route.query;
|
||||
const file = fileList.find((item) => item.idx == idx);
|
||||
if (file) {
|
||||
filingData.value = {
|
||||
form: file.form,
|
||||
filingDate: file.filingDate,
|
||||
formDescription: file.formDescription,
|
||||
fileLink: file.fileLink || "",
|
||||
pdfFile: file.pdfFile || "",
|
||||
wordFile: file.wordFile || "",
|
||||
excelFile: file.excelFile || "",
|
||||
htmlLink: file.fileLink || "#",
|
||||
dataFiles: file.dataFiles || [],
|
||||
company: "FiEE, Inc. ",
|
||||
issuer: "FiEE, Inc. ",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
// console.log(filingData.value);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="details-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Form:</span>
|
||||
<a :href="filingData.fileLink" class="detail-value link">{{
|
||||
<a :href="filingData.htmlLink" class="detail-value link">{{
|
||||
filingData.form
|
||||
}}</a>
|
||||
</div>
|
||||
@ -37,39 +37,9 @@
|
||||
<div class="section">
|
||||
<h2 class="section-title">Filing Formats</h2>
|
||||
<div class="formats-list">
|
||||
<div class="format-item" v-if="filingData.pdfFile">
|
||||
<img :src="pdfFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.pdfFile, 'pdf')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.wordFile">
|
||||
<img :src="wordFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.wordFile, 'word')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.excelFile">
|
||||
<img :src="excelFile" alt="link" class="format-icon" />
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
class="format-link"
|
||||
target="_blank"
|
||||
@click="handleViewDocument(filingData.excelFile, 'excel')"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
<div class="format-item" v-if="filingData.fileLink">
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.fileLink" class="format-link" target="_blank"
|
||||
<div class="format-item">
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="filingData.htmlLink" class="format-link" target="_blank"
|
||||
>View HTML</a
|
||||
>
|
||||
</div>
|
||||
@ -90,7 +60,7 @@
|
||||
v-for="(item, idx) in filingData.dataFiles"
|
||||
:key="idx"
|
||||
>
|
||||
<img :src="fileLink" alt="link" class="format-icon" />
|
||||
<img :src="iconLink" alt="link" class="format-icon" />
|
||||
<a :href="item.fileUrl" class="format-link" target="_blank">{{
|
||||
item.description
|
||||
}}</a>
|
||||
@ -103,12 +73,8 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
|
||||
import pdfFile from "@/assets/image/icon/icon-pdf.png";
|
||||
import wordFile from "@/assets/image/icon/icon-word.png";
|
||||
import excelFile from "@/assets/image/icon/icon-excel.png";
|
||||
import fileLink from "@/assets/image/icon/icon-link.png";
|
||||
|
||||
import iconLink from "@/assets/image/icon/icon-link.png";
|
||||
import { fileList } from "@/dict/secFiles.js";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
// 这里可以根据路由参数或props获取具体的文件详情
|
||||
@ -118,48 +84,27 @@ const filingData = ref({
|
||||
formDescription: "",
|
||||
company: "",
|
||||
issuer: "",
|
||||
fileLink: "#",
|
||||
htmlLink: "#",
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
const { filingKey } = route.query;
|
||||
getPageData(filingKey);
|
||||
});
|
||||
import axios from "axios";
|
||||
const getPageData = async (filingKey) => {
|
||||
let url = "https://erpapi.fiee.com/api/fiee/sec-filing/web/detail";
|
||||
let params = {
|
||||
filingKey,
|
||||
};
|
||||
const res = await axios.post(url, params);
|
||||
if (res.data.status === 0) {
|
||||
let file = res.data.data.data;
|
||||
console.log(file);
|
||||
const { idx } = route.query;
|
||||
const file = fileList.find((item) => item.idx == idx);
|
||||
if (file) {
|
||||
filingData.value = {
|
||||
form: file.form,
|
||||
filingDate: file.filingDate,
|
||||
formDescription: file.formDescription,
|
||||
fileLink: file.fileLink || "",
|
||||
pdfFile: file.pdfFile || "",
|
||||
wordFile: file.wordFile || "",
|
||||
excelFile: file.excelFile || "",
|
||||
htmlLink: file.fileLink || "#",
|
||||
dataFiles: file.dataFiles || [],
|
||||
company: "FiEE, Inc. ",
|
||||
issuer: "FiEE, Inc. ",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
// 查看文档
|
||||
const handleViewDocument = (val, type) => {
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${val}&attachmentName=${type}`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
// console.log(filingData.value);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -16,7 +16,7 @@
|
||||
class="absolute inset-0 bg-gradient-to-r from-[#f5f0ff] to-white opacity-80"
|
||||
></div>
|
||||
<div class="relative p-8 flex flex-col h-full">
|
||||
<div class="flex items-center mb-6 max-h-[3.5rem]">
|
||||
<div class="flex items-start mb-6">
|
||||
<div
|
||||
class="bg-[#895bff] p-3 rounded-lg shadow-md mr-6 transform hover:rotate-6 transition-transform duration-300 governance-icon"
|
||||
>
|
||||
@ -36,37 +36,18 @@
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<n-tooltip trigger="hover" :disabled="!item.showTooltip" width="trigger">
|
||||
<template #trigger>
|
||||
<h1
|
||||
:ref="el => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
class=""
|
||||
>
|
||||
<h1 style="font-size: 18px" class="">
|
||||
{{ item.title }}
|
||||
</h1>
|
||||
<!-- <text> {{ item.date }}</text> -->
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-auto">
|
||||
<a
|
||||
:href="item.url"
|
||||
class="inline-flex items-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#895bff] hover:bg-[#7a4de6] transition-all duration-300 transform hover:scale-105 shadow-md"
|
||||
target="_blank"
|
||||
style="font-size: 16px; cursor: pointer;"
|
||||
@click="handleViewDocument(item)"
|
||||
style="font-size: 16px"
|
||||
>
|
||||
View Document
|
||||
<svg
|
||||
@ -91,110 +72,46 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted, ref, nextTick, watch } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { reactive } from "vue";
|
||||
import quarterlyPdfone from "@/assets/file/FiEE, Inc._Audit Committee Charter.pdf";
|
||||
import quarterlyPdftwo from "@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf";
|
||||
|
||||
import quarterlyPdfone from '@/assets/file/FiEE, Inc._Audit Committee Charter.pdf'
|
||||
import quarterlyPdftwo from '@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf'
|
||||
import quarterlyPdfthree from "@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf";
|
||||
|
||||
import quarterlyPdfthree from '@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf'
|
||||
|
||||
import quarterlyPdffour from '@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf'
|
||||
import quarterlyPdffour from "@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf";
|
||||
|
||||
const state = reactive({
|
||||
list: [
|
||||
// {
|
||||
// title: 'AUDIT COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.',
|
||||
// url: quarterlyPdfone,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'CODE OF BUSINESS CONDUCT AND ETHICS',
|
||||
// description:
|
||||
// 'Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.',
|
||||
// url: quarterlyPdftwo,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'COMPENSATION COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.',
|
||||
// url: quarterlyPdfthree,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Provides the framework for director nominations and corporate governance matters.',
|
||||
// url: quarterlyPdffour,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
{
|
||||
title: "AUDIT COMMITTEE CHARTER",
|
||||
description:
|
||||
"Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.",
|
||||
url: quarterlyPdfone,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "CODE OF BUSINESS CONDUCT AND ETHICS",
|
||||
description:
|
||||
"Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.",
|
||||
url: quarterlyPdftwo,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "COMPENSATION COMMITTEE CHARTER",
|
||||
description:
|
||||
"Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.",
|
||||
url: quarterlyPdfthree,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER",
|
||||
description:
|
||||
"Provides the framework for director nominations and corporate governance matters.",
|
||||
url: quarterlyPdffour,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.list.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGovernanceDisplay()
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.list, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/governance/display'
|
||||
let params = {}
|
||||
axios
|
||||
.get(url, { params })
|
||||
.then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
state.list = res.data.data.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
// console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
// 查看文档
|
||||
const handleViewDocument = (item) => {
|
||||
// console.log(item)
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${
|
||||
item.attachment
|
||||
}&attachmentName=${item.attachmentName}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -16,7 +16,7 @@
|
||||
class="absolute inset-0 bg-gradient-to-r from-[#f5f0ff] to-white opacity-80"
|
||||
></div>
|
||||
<div class="relative p-8 flex flex-col h-full">
|
||||
<div class="flex items-center mb-6 max-h-[3.5rem]">
|
||||
<div class="flex items-start mb-6">
|
||||
<div
|
||||
class="bg-[#895bff] p-3 rounded-lg shadow-md mr-6 transform hover:rotate-6 transition-transform duration-300 governance-icon"
|
||||
>
|
||||
@ -36,37 +36,18 @@
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<n-tooltip trigger="hover" :disabled="!item.showTooltip" width="trigger">
|
||||
<template #trigger>
|
||||
<h1
|
||||
:ref="el => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
class=""
|
||||
>
|
||||
<h1 style="font-size: 18px" class="">
|
||||
{{ item.title }}
|
||||
</h1>
|
||||
<!-- <text> {{ item.date }}</text> -->
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-auto">
|
||||
<a
|
||||
:href="item.url"
|
||||
class="inline-flex items-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#895bff] hover:bg-[#7a4de6] transition-all duration-300 transform hover:scale-105 shadow-md"
|
||||
target="_blank"
|
||||
style="font-size: 16px; cursor: pointer;"
|
||||
@click="handleViewDocument(item)"
|
||||
style="font-size: 16px"
|
||||
>
|
||||
View Document
|
||||
<svg
|
||||
@ -91,110 +72,46 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted, ref, nextTick, watch } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { reactive } from "vue";
|
||||
import quarterlyPdfone from "@/assets/file/FiEE, Inc._Audit Committee Charter.pdf";
|
||||
import quarterlyPdftwo from "@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf";
|
||||
|
||||
import quarterlyPdfone from '@/assets/file/FiEE, Inc._Audit Committee Charter.pdf'
|
||||
import quarterlyPdftwo from '@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf'
|
||||
import quarterlyPdfthree from "@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf";
|
||||
|
||||
import quarterlyPdfthree from '@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf'
|
||||
|
||||
import quarterlyPdffour from '@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf'
|
||||
import quarterlyPdffour from "@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf";
|
||||
|
||||
const state = reactive({
|
||||
list: [
|
||||
// {
|
||||
// title: 'AUDIT COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.',
|
||||
// url: quarterlyPdfone,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'CODE OF BUSINESS CONDUCT AND ETHICS',
|
||||
// description:
|
||||
// 'Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.',
|
||||
// url: quarterlyPdftwo,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'COMPENSATION COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.',
|
||||
// url: quarterlyPdfthree,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Provides the framework for director nominations and corporate governance matters.',
|
||||
// url: quarterlyPdffour,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
{
|
||||
title: "AUDIT COMMITTEE CHARTER",
|
||||
description:
|
||||
"Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.",
|
||||
url: quarterlyPdfone,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "CODE OF BUSINESS CONDUCT AND ETHICS",
|
||||
description:
|
||||
"Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.",
|
||||
url: quarterlyPdftwo,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "COMPENSATION COMMITTEE CHARTER",
|
||||
description:
|
||||
"Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.",
|
||||
url: quarterlyPdfthree,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER",
|
||||
description:
|
||||
"Provides the framework for director nominations and corporate governance matters.",
|
||||
url: quarterlyPdffour,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.list.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGovernanceDisplay()
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.list, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/governance/display'
|
||||
let params = {}
|
||||
axios
|
||||
.get(url, { params })
|
||||
.then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
state.list = res.data.data.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
// console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
// 查看文档
|
||||
const handleViewDocument = (item) => {
|
||||
// console.log(item)
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${
|
||||
item.attachment
|
||||
}&attachmentName=${item.attachmentName}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -13,7 +13,7 @@
|
||||
class="absolute inset-0 bg-gradient-to-r from-[#f5f0ff] to-white opacity-80"
|
||||
></div>
|
||||
<div class="relative p-8 flex flex-col h-full">
|
||||
<div class="flex items-center mb-6 max-h-[3.5rem]">
|
||||
<div class="flex items-start mb-6">
|
||||
<div
|
||||
class="bg-[#895bff] p-3 rounded-lg shadow-md mr-6 transform hover:rotate-6 transition-transform duration-300 governance-icon"
|
||||
>
|
||||
@ -33,36 +33,17 @@
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<n-tooltip trigger="click" :disabled="!item.showTooltip" width="trigger">
|
||||
<template #trigger>
|
||||
<h1
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
class="text-2xl font-medium text-gray-800"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
<h1 class="text-2xl font-medium text-gray-800 mb-2">
|
||||
{{ item.title }}
|
||||
</h1>
|
||||
<!-- <text> {{ item.date }}</text> -->
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-auto">
|
||||
<a
|
||||
:href="item.url"
|
||||
class="inline-flex items-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#895bff] hover:bg-[#7a4de6] transition-all duration-300 transform hover:scale-105 shadow-md"
|
||||
target="_blank"
|
||||
style="cursor: pointer;"
|
||||
@click="handleViewDocument(item)"
|
||||
>
|
||||
View Document
|
||||
<svg
|
||||
@ -87,110 +68,46 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted, ref, nextTick, watch } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { reactive } from "vue";
|
||||
import quarterlyPdfone from "@/assets/file/FiEE, Inc._Audit Committee Charter.pdf";
|
||||
import quarterlyPdftwo from "@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf";
|
||||
|
||||
import quarterlyPdfone from '@/assets/file/FiEE, Inc._Audit Committee Charter.pdf'
|
||||
import quarterlyPdftwo from '@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf'
|
||||
import quarterlyPdfthree from "@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf";
|
||||
|
||||
import quarterlyPdfthree from '@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf'
|
||||
|
||||
import quarterlyPdffour from '@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf'
|
||||
import quarterlyPdffour from "@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf";
|
||||
|
||||
const state = reactive({
|
||||
list: [
|
||||
// {
|
||||
// title: 'AUDIT COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.',
|
||||
// url: quarterlyPdfone,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'CODE OF BUSINESS CONDUCT AND ETHICS',
|
||||
// description:
|
||||
// 'Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.',
|
||||
// url: quarterlyPdftwo,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'COMPENSATION COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.',
|
||||
// url: quarterlyPdfthree,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Provides the framework for director nominations and corporate governance matters.',
|
||||
// url: quarterlyPdffour,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
{
|
||||
title: "AUDIT COMMITTEE CHARTER",
|
||||
description:
|
||||
"Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.",
|
||||
url: quarterlyPdfone,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "CODE OF BUSINESS CONDUCT AND ETHICS",
|
||||
description:
|
||||
"Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.",
|
||||
url: quarterlyPdftwo,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "COMPENSATION COMMITTEE CHARTER",
|
||||
description:
|
||||
"Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.",
|
||||
url: quarterlyPdfthree,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER",
|
||||
description:
|
||||
"Provides the framework for director nominations and corporate governance matters.",
|
||||
url: quarterlyPdffour,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.list.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGovernanceDisplay()
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.list, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/governance/display'
|
||||
let params = {}
|
||||
axios
|
||||
.get(url, { params })
|
||||
.then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
state.list = res.data.data.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
// console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
// 查看文档
|
||||
const handleViewDocument = (item) => {
|
||||
// console.log(item)
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${
|
||||
item.attachment
|
||||
}&attachmentName=${item.attachmentName}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -13,7 +13,7 @@
|
||||
class="absolute inset-0 bg-gradient-to-r from-[#f5f0ff] to-white opacity-80"
|
||||
></div>
|
||||
<div class="relative p-8 flex flex-col h-full">
|
||||
<div class="flex items-center mb-6 max-h-[3.5rem]">
|
||||
<div class="flex items-start mb-6">
|
||||
<div
|
||||
class="bg-[#895bff] p-3 rounded-lg shadow-md mr-6 transform hover:rotate-6 transition-transform duration-300 governance-icon"
|
||||
>
|
||||
@ -33,36 +33,17 @@
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<n-tooltip trigger="click" :disabled="!item.showTooltip" width="trigger">
|
||||
<template #trigger>
|
||||
<h1
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
class="text-2xl font-medium text-gray-800"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
<h1 class="text-2xl font-medium text-gray-800 mb-2">
|
||||
{{ item.title }}
|
||||
</h1>
|
||||
<!-- <text> {{ item.date }}</text> -->
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-auto">
|
||||
<a
|
||||
:href="item.url"
|
||||
class="inline-flex items-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#895bff] hover:bg-[#7a4de6] transition-all duration-300 transform hover:scale-105 shadow-md"
|
||||
target="_blank"
|
||||
style="cursor: pointer;"
|
||||
@click="handleViewDocument(item)"
|
||||
>
|
||||
View Document
|
||||
<svg
|
||||
@ -87,110 +68,46 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, onMounted, ref, nextTick, watch } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { reactive } from "vue";
|
||||
import quarterlyPdfone from "@/assets/file/FiEE, Inc._Audit Committee Charter.pdf";
|
||||
import quarterlyPdftwo from "@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf";
|
||||
|
||||
import quarterlyPdfone from '@/assets/file/FiEE, Inc._Audit Committee Charter.pdf'
|
||||
import quarterlyPdftwo from '@/assets/file/FiEE, Inc. _Code of Business Conduct and Ethics.pdf'
|
||||
import quarterlyPdfthree from "@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf";
|
||||
|
||||
import quarterlyPdfthree from '@/assets/file/FiEE, Inc._Compensation Committee Charter.pdf'
|
||||
|
||||
import quarterlyPdffour from '@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf'
|
||||
import quarterlyPdffour from "@/assets/file/FiEE, Inc. _Nominating and Corporate Governance Committee Charter.pdf";
|
||||
|
||||
const state = reactive({
|
||||
list: [
|
||||
// {
|
||||
// title: 'AUDIT COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.',
|
||||
// url: quarterlyPdfone,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'CODE OF BUSINESS CONDUCT AND ETHICS',
|
||||
// description:
|
||||
// 'Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.',
|
||||
// url: quarterlyPdftwo,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'COMPENSATION COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.',
|
||||
// url: quarterlyPdfthree,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
// {
|
||||
// title: 'NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER',
|
||||
// description:
|
||||
// 'Provides the framework for director nominations and corporate governance matters.',
|
||||
// url: quarterlyPdffour,
|
||||
// date: 'May 30, 2025',
|
||||
// },
|
||||
{
|
||||
title: "AUDIT COMMITTEE CHARTER",
|
||||
description:
|
||||
"Defines the purpose, composition, and responsibilities of the Audit Committee in overseeing financial reporting and disclosure.",
|
||||
url: quarterlyPdfone,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "CODE OF BUSINESS CONDUCT AND ETHICS",
|
||||
description:
|
||||
"Establishes the ethical standards and legal compliance expectations for all directors, officers and employees.",
|
||||
url: quarterlyPdftwo,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "COMPENSATION COMMITTEE CHARTER",
|
||||
description:
|
||||
"Outlines the duties and responsibilities for overseeing executive compensation and benefit plans.",
|
||||
url: quarterlyPdfthree,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
{
|
||||
title: "NOMINATING AND CORPORATE GOVERNANCE COMMITTEE CHARTER",
|
||||
description:
|
||||
"Provides the framework for director nominations and corporate governance matters.",
|
||||
url: quarterlyPdffour,
|
||||
date: "May 30, 2025",
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.list.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getGovernanceDisplay()
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.list, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
//获取官网展示文档
|
||||
const getGovernanceDisplay = () => {
|
||||
// let url = 'https://erpapi.fiee.com/api/fiee/fiee/governance/display'
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/governance/display'
|
||||
let params = {}
|
||||
axios
|
||||
.get(url, { params })
|
||||
.then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
state.list = res.data.data.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
// console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
// 查看文档
|
||||
const handleViewDocument = (item) => {
|
||||
// console.log(item)
|
||||
window.open(
|
||||
`${import.meta.env.VITE_PAGE_URL}/office?url=${
|
||||
item.attachment
|
||||
}&attachmentName=${item.attachmentName}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,17 +1,16 @@
|
||||
<script setup>
|
||||
import customHeader from '@/components/customHeader/index.vue'
|
||||
import customFooter from '@/components/customFooter/index.vue'
|
||||
import { NScrollbar } from 'naive-ui'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="flex flex-col h-screen">
|
||||
<customHeader></customHeader>
|
||||
<n-scrollbar class="bg-[url('@/assets/image/bg-pc.png')] bg-cover bg-center flex-1">
|
||||
<div>
|
||||
<div
|
||||
class="bg-[url('@/assets/image/bg-pc.png')] bg-cover bg-center flex-1 overflow-auto"
|
||||
>
|
||||
<router-view />
|
||||
</div>
|
||||
</n-scrollbar>
|
||||
<customFooter></customFooter>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,19 +1,16 @@
|
||||
<script setup>
|
||||
import customHeader from '@/components/customHeader/index.vue'
|
||||
import customFooter from '@/components/customFooter/index.vue'
|
||||
import { NScrollbar } from 'naive-ui'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="flex flex-col h-100svh">
|
||||
<customHeader />
|
||||
<n-scrollbar
|
||||
class="bg-[url('@/assets/image/bg-mobile.png')] bg-cover bg-center flex-1"
|
||||
<div
|
||||
class="bg-[url('@/assets/image/bg-mobile.png')] bg-cover bg-center flex-1 overflow-auto"
|
||||
>
|
||||
<div>
|
||||
<router-view />
|
||||
</div>
|
||||
</n-scrollbar>
|
||||
<customFooter />
|
||||
</div>
|
||||
</template>
|
||||
|
@ -74,37 +74,16 @@
|
||||
>
|
||||
<div>
|
||||
<div style="font-size: 18px">{{ item.time }}</div>
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
|
||||
<div style="font-size: 18px">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="font-size: 18px;flex-shrink: 0; margin: 0 0 0 0.6rem;"
|
||||
style="font-size: 18px"
|
||||
class="cursor-pointer"
|
||||
@click="handleLink(item)"
|
||||
@click="handleLink(item.router, item.time)"
|
||||
>
|
||||
View Press Release<img
|
||||
class="ml-[10px]"
|
||||
@ -115,13 +94,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newList.length === 0" class="flex justify-center items-center">
|
||||
<img
|
||||
src="@/assets/image/icon/default-empty.png"
|
||||
alt="empty"
|
||||
style="width: 109px; height: 60px;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新增:股票信息与活动预告双栏模块 -->
|
||||
@ -230,11 +202,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { onMounted, ref, onUnmounted, computed } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useStockQuote } from "@/store/stock-quote/index.js";
|
||||
import axios from 'axios'
|
||||
const { getStockQuate, stockQuote, formatted } = useStockQuote();
|
||||
|
||||
getStockQuate();
|
||||
@ -244,44 +214,17 @@ const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
const newList = ref([
|
||||
// {
|
||||
// time: "June 3, 2025",
|
||||
// title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
// router: "/news",
|
||||
// },
|
||||
// {
|
||||
// time: "June 2, 2025",
|
||||
// title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
// router: "/news",
|
||||
// },
|
||||
{
|
||||
time: "June 3, 2025",
|
||||
title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
router: "/news",
|
||||
},
|
||||
{
|
||||
time: "June 2, 2025",
|
||||
title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
router: "/news",
|
||||
},
|
||||
]);
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.time = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
newList.value = res.data.data?.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
if (contentRef.value && "IntersectionObserver" in window) {
|
||||
observer = new IntersectionObserver(
|
||||
@ -306,36 +249,8 @@ onMounted(() => {
|
||||
// 回退方案:如果不支持IntersectionObserver则直接显示
|
||||
isInView.value = true;
|
||||
}
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
newList.value.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
watch(() => newList.value, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
onUnmounted(() => {
|
||||
if (observer) {
|
||||
observer.disconnect();
|
||||
@ -343,11 +258,11 @@ onUnmounted(() => {
|
||||
});
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const handleLink = (item) => {
|
||||
const handleLink = (routers, index) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
path: routers,
|
||||
query: {
|
||||
id: item.id,
|
||||
date: index,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
@ -74,37 +74,15 @@
|
||||
<div>
|
||||
<div style="font-size: 18px">{{ item.time }}</div>
|
||||
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
<div style="font-size: 18px">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="font-size: 18px;flex-shrink: 0; margin: 0 0 0 0.6rem;"
|
||||
style="font-size: 18px"
|
||||
class="cursor-pointer"
|
||||
@click="handleLink(item)"
|
||||
@click="handleLink(item.router, item.time)"
|
||||
>
|
||||
View Press Release<img
|
||||
class="ml-[10px]"
|
||||
@ -115,13 +93,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newList.length === 0" class="flex justify-center items-center">
|
||||
<img
|
||||
src="@/assets/image/icon/default-empty.png"
|
||||
alt="empty"
|
||||
style="width: 109px; height: 60px;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新增:股票信息与活动预告双栏模块 -->
|
||||
@ -220,55 +191,27 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { onMounted, ref, onUnmounted, computed } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useStockQuote } from "@/store/stock-quote/index.js";
|
||||
import axios from 'axios'
|
||||
const { getStockQuate, stockQuote, formatted } = useStockQuote();
|
||||
getStockQuate();
|
||||
// 示例数据
|
||||
const sampleDate = ref(formatted);
|
||||
|
||||
const newList = ref([
|
||||
// {
|
||||
// time: "June 3, 2025",
|
||||
// title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
// router: "/news",
|
||||
// },
|
||||
// {
|
||||
// time: "June 2, 2025",
|
||||
// title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
// router: "/news",
|
||||
// },
|
||||
{
|
||||
time: "June 3, 2025",
|
||||
title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
router: "/news",
|
||||
},
|
||||
{
|
||||
time: "June 2, 2025",
|
||||
title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
router: "/news",
|
||||
},
|
||||
]);
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.time = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
newList.value = res.data.data?.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const { t: $t } = useI18n();
|
||||
const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
@ -297,36 +240,8 @@ onMounted(() => {
|
||||
// 回退方案:如果不支持IntersectionObserver则直接显示
|
||||
isInView.value = true;
|
||||
}
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
newList.value.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
watch(() => newList.value, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
onUnmounted(() => {
|
||||
if (observer) {
|
||||
observer.disconnect();
|
||||
@ -334,11 +249,11 @@ onUnmounted(() => {
|
||||
});
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const handleLink = (item) => {
|
||||
const handleLink = (routers, index) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
path: routers,
|
||||
query: {
|
||||
id: item.id,
|
||||
date: index,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
@ -74,37 +74,16 @@
|
||||
>
|
||||
<div>
|
||||
<div style="font-size: 18px">{{ item.time }}</div>
|
||||
<n-tooltip
|
||||
trigger="click"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
|
||||
<div style="font-size: 18px">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="font-size: 18px;flex-shrink: 0;margin: 0 0 0 0.6rem;"
|
||||
style="font-size: 18px"
|
||||
class="cursor-pointer"
|
||||
@click="handleLink(item)"
|
||||
@click="handleLink(item.router, item.time)"
|
||||
>
|
||||
View Press Release<img
|
||||
class="ml-[10px]"
|
||||
@ -115,13 +94,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newList.length === 0" class="flex justify-center items-center">
|
||||
<img
|
||||
src="@/assets/image/icon/default-empty.png"
|
||||
alt="empty"
|
||||
style="width: 109px; height: 60px;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新增:股票信息与活动预告双栏模块 -->
|
||||
@ -230,11 +202,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { onMounted, ref, onUnmounted, computed } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useStockQuote } from "@/store/stock-quote/index.js";
|
||||
import axios from 'axios'
|
||||
const { getStockQuate, stockQuote, formatted } = useStockQuote();
|
||||
getStockQuate();
|
||||
const { t: $t } = useI18n();
|
||||
@ -242,44 +212,17 @@ const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
const newList = ref([
|
||||
// {
|
||||
// time: "June 3, 2025",
|
||||
// title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
// router: "/news",
|
||||
// },
|
||||
// {
|
||||
// time: "June 2, 2025",
|
||||
// title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
// router: "/news",
|
||||
// },
|
||||
{
|
||||
time: "June 3, 2025",
|
||||
title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
router: "/news",
|
||||
},
|
||||
{
|
||||
time: "June 2, 2025",
|
||||
title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
router: "/news",
|
||||
},
|
||||
]);
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.time = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
newList.value = res.data.data?.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
if (contentRef.value && "IntersectionObserver" in window) {
|
||||
observer = new IntersectionObserver(
|
||||
@ -304,36 +247,8 @@ onMounted(() => {
|
||||
// 回退方案:如果不支持IntersectionObserver则直接显示
|
||||
isInView.value = true;
|
||||
}
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
newList.value.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
watch(() => newList.value, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
onUnmounted(() => {
|
||||
if (observer) {
|
||||
observer.disconnect();
|
||||
@ -341,11 +256,11 @@ onUnmounted(() => {
|
||||
});
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const handleLink = (item) => {
|
||||
const handleLink = (routers, index) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
path: routers,
|
||||
query: {
|
||||
id: item.id,
|
||||
date: index,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
@ -74,37 +74,16 @@
|
||||
>
|
||||
<div>
|
||||
<div style="font-size: 18px">{{ item.time }}</div>
|
||||
<n-tooltip
|
||||
trigger="click"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, index)"
|
||||
style="
|
||||
font-size: 18px;
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
|
||||
<div style="font-size: 18px">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="font-size: 18px;flex-shrink: 0; margin: 0 0 0 0.9rem;"
|
||||
style="font-size: 18px"
|
||||
class="cursor-pointer"
|
||||
@click="handleLink(item)"
|
||||
@click="handleLink(item.router, item.time)"
|
||||
>
|
||||
View Press Release<img
|
||||
class="ml-[10px]"
|
||||
@ -115,13 +94,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="newList.length === 0" class="flex justify-center items-center">
|
||||
<img
|
||||
src="@/assets/image/icon/default-empty.png"
|
||||
alt="empty"
|
||||
style="width: 109px; height: 60px;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- 新增:股票信息与活动预告双栏模块 -->
|
||||
@ -230,11 +202,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref, onUnmounted, computed, nextTick, watch } from "vue";
|
||||
import { NTooltip } from 'naive-ui'
|
||||
import { onMounted, ref, onUnmounted, computed } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useStockQuote } from "@/store/stock-quote/index.js";
|
||||
import axios from 'axios'
|
||||
const { getStockQuate, stockQuote, formatted } = useStockQuote();
|
||||
|
||||
getStockQuate();
|
||||
@ -244,19 +214,6 @@ const contentRef = ref(null);
|
||||
const isInView = ref(false);
|
||||
let observer = null;
|
||||
|
||||
const newList = ref([
|
||||
// {
|
||||
// time: "June 3, 2025",
|
||||
// title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
// router: "/news",
|
||||
// },
|
||||
// {
|
||||
// time: "June 2, 2025",
|
||||
// title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
// router: "/news",
|
||||
// },
|
||||
]);
|
||||
|
||||
onMounted(() => {
|
||||
if (contentRef.value && "IntersectionObserver" in window) {
|
||||
observer = new IntersectionObserver(
|
||||
@ -281,61 +238,19 @@ onMounted(() => {
|
||||
// 回退方案:如果不支持IntersectionObserver则直接显示
|
||||
isInView.value = true;
|
||||
}
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
newList.value.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
watch(() => newList.value, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
// 获取新闻发布(展示在首页的)
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
display: 2, // 1: 不展示在首页 2: 展示在首页
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.time = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
newList.value = res.data.data?.data || []
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
const newList = ref([
|
||||
{
|
||||
time: "June 3, 2025",
|
||||
title: "FiEE, Inc. seized market opportunities through 2025 Osaka Expo",
|
||||
router: "/news",
|
||||
},
|
||||
{
|
||||
time: "June 2, 2025",
|
||||
title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
|
||||
router: "/news",
|
||||
},
|
||||
]);
|
||||
|
||||
onUnmounted(() => {
|
||||
if (observer) {
|
||||
@ -344,11 +259,11 @@ onUnmounted(() => {
|
||||
});
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const handleLink = (item) => {
|
||||
const handleLink = (routers, index) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
path: routers,
|
||||
query: {
|
||||
id: item.id,
|
||||
date: index,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
@ -1,6 +1,339 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div id="my-richText"></div>
|
||||
<template v-if="state.date === 'May 30, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Announces Reinitiation of Trading on Nasdaq</strong>
|
||||
</h2>
|
||||
<p>May 30, 2025</p>
|
||||
<p>
|
||||
<em>Company will resume trading under its existing symbol "MINM"</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Hong Kong, May 30, 2025 </strong>— FiEE, Inc. (“FiEE, Inc.” or
|
||||
the “Company”), a technology company integrating IoT, connectivity and
|
||||
AI to redefine brand management solutions in the digital era, is pleased
|
||||
to announce that following a hearing before the Nasdaq Hearings Panel
|
||||
(the “Panel”) on May 13, 2025, the Panel issued a decision on May 29,
|
||||
2025, stating that Nasdaq will reinstate trading of the Company's common
|
||||
stock on the Nasdaq Capital Market at the open of business on Monday,
|
||||
June 2, 2025 under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, </strong>commented,
|
||||
"We are honored to announce the reinitiation of trading of our common
|
||||
stock on Nasdaq, a significant milestone that reflects our unwavering
|
||||
commitment to operational excellence and strategic growth. We extend our
|
||||
sincere gratitude to the Nasdaq team for their prompt review and
|
||||
approval of our request, affirming our compliance with all applicable
|
||||
criteria for continued listing on the Nasdaq Capital Market.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation aimed at
|
||||
capitalizing on broader market opportunities. Central to this evolution
|
||||
is our integrated approach, where cyber-hardened IoT connectivity
|
||||
converges with AI-driven content creation and audience targeting. This
|
||||
synergy is designed to empower Key Opinion Leaders (KOLs) and brands to
|
||||
achieve accelerated growth and deeper audience engagement. Leveraging
|
||||
IoT-connectivity solutions, AI and big data analytics, we are capable of
|
||||
delivering intelligent, multimedia and multilingual content tailored to
|
||||
diverse audiences. Coupling with AI targeting analysis, we enhance
|
||||
audience targeting capabilities, ensuring effective content placement
|
||||
and personalized promotions.
|
||||
</p>
|
||||
<p>
|
||||
As we advance, our focus remains on continuous innovation and strategic
|
||||
initiatives that drive long- term growth and shareholder value."
|
||||
</p>
|
||||
<h3>About FiEE, Inc.</h3>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ: MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand our technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and artificial intelligence ("AI") to explore new
|
||||
business prospects and extend our global footprint.
|
||||
</p>
|
||||
<p>
|
||||
Our services are structured into four key categories: Cloud-Managed
|
||||
Connectivity (WiFi) Platform, IoT Hardware Sales & Licensing, SAAS
|
||||
Solutions, and Professional To-C and To-B Services & Support.
|
||||
Notably, we have introduced our innovative Software as a Service
|
||||
("SaaS") solutions, which integrate our AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of Key Opinion Leaders (KOLs)
|
||||
on major social media platforms worldwide, assisting them in developing,
|
||||
managing, and optimizing their digital presence across global platforms.
|
||||
Our services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<h3>Forward-Looking Statements</h3>
|
||||
<p>
|
||||
This communication contains forward-looking statements which include,
|
||||
but are not limited to, statements regarding the Company's listing of
|
||||
its common stock on Nasdaq; the impact of the listing; the Company's
|
||||
business strategy, including its strategic transformation; and the
|
||||
Company's ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company's expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company's business and the actions it may take in response thereto; the
|
||||
Company's ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward- looking statements are included under the
|
||||
caption "Risk Factors" in the Company's Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company's
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at
|
||||
<a href="http://www.sec.gov/">www.sec.gov.</a>
|
||||
</p>
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 2, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Closes Its First Day of Trading on NASDAQ </strong>
|
||||
</h2>
|
||||
<p>June 2, 2025</p>
|
||||
<p><em>Company resumed trading under its existing symbol "MINM" </em></p>
|
||||
<p>
|
||||
<strong>Hong Kong, 2 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, commenced the trading of its common stock on Monday, June
|
||||
2, 2025 on the Nasdaq Capital Market under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
With the vision of growing Key Opinion Leaders (“KOLs”) in the market,
|
||||
FiEE, Inc. is currently strategically transforming to seize market
|
||||
opportunities with its innovative brand management solutions for the
|
||||
underrecognized talents. Since 2023, FiEE, Inc. has been pivoting to a
|
||||
Software First business model through enhancing its MinimOS cloud
|
||||
platform and API suite for ISPs/OEMs, as well merging with e2Companies
|
||||
to broaden its technology and revenue base. Currently, it is offering
|
||||
multi-faceted IoT-enabled Connectivity Solutions for the talented
|
||||
individuals in the market, including Cloud-Managed Connectivity (WiFi)
|
||||
Platform, IoT Hardware Sales & Licensing, SAAS Solutions, and
|
||||
Professional To-C and To-B Services & Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is addressing significant
|
||||
challenges faced by talented individuals in the market, such as
|
||||
insufficient promotion channels, overdependence on offline events, and
|
||||
high costs of conventional advertising. It is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for these talents, aiming to elevate their personal brand and
|
||||
influence. Leveraging robust technological foundation on cybersecurity,
|
||||
market analysis, AI and big data analysis, the Company is also
|
||||
positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong> added,
|
||||
"We are glad to witness our common stock resumed trading on Nasdaq. In
|
||||
the foreseeable future, I plan to lead the team to continuously enhance
|
||||
our technological capabilities, utilizing AI, big data analysis, and our
|
||||
long-standing IoT-enabled Connectivity Solutions to match potential
|
||||
users in the market and provide them with comprehensive solutions. Our
|
||||
long-term goal is to build a unique KOL community with billions of fans,
|
||||
empowering them to achieve sustained success in the digital landscape.
|
||||
We are confident that with our new positioning, FiEE, Inc. will reach
|
||||
new heights and create long-lasting value for our shareholders.”
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.'s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.'s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the Company's listing of its common stock on
|
||||
Nasdaq; the impact of the listing; the Company's business strategy,
|
||||
including its strategic transformation; and the Company's ability to
|
||||
drive long-term growth and shareholder value. These forward-looking
|
||||
statements are subject to the safe harbor provisions under the Private
|
||||
Securities Litigation Reform Act of 1995. The Company's expectations and
|
||||
beliefs regarding these matters may not materialize. Actual outcomes and
|
||||
results may differ materially from those contemplated by these
|
||||
forward-looking statements as a result of uncertainties, risks, and
|
||||
changes in circumstances, including but not limited to risks and
|
||||
uncertainties related to: the ability of the Company to maintain
|
||||
compliance with the Nasdaq continued listing standards; the impact of
|
||||
fluctuations in global financial markets on the Company's business and
|
||||
the actions it may take in response thereto; the Company's ability to
|
||||
execute its plans and strategies; and the impact of government laws and
|
||||
regulations. Additional risks and uncertainties that could cause actual
|
||||
outcomes and results to differ materially from those contemplated by the
|
||||
forward-looking statements are included under the caption "Risk Factors"
|
||||
in the Company's Quarterly Report on Form 10-Q for the quarter ended
|
||||
March 31, 2025 and elsewhere in the Company's subsequent reports on Form
|
||||
10-K, Form 10-Q or Form 8-K filed with the U.S. Securities and Exchange
|
||||
Commission from time to time and available at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 3, 2025'">
|
||||
<h2>
|
||||
<strong
|
||||
>FiEE, Inc. seized market opportunities through 2025 Osaka
|
||||
Expo</strong
|
||||
>
|
||||
</h2>
|
||||
<p>3 June, 2025</p>
|
||||
<p>
|
||||
<strong>Hong Kong, 3 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, is pleased to announce significant business updates.
|
||||
</p>
|
||||
<p>
|
||||
Recently, FiEE, Inc. has entered into a strategic agency and cooperation
|
||||
agreement with Beijing Yilian World Expo Business Management Group Co.,
|
||||
Ltd. (“Beijing Yilian”). The Company is appointed as the agent to
|
||||
introduce businesses to participate in the international trade fair held
|
||||
at INTEX Osaka. The trade fair will be held from mid-June to August
|
||||
2025, featuring a diverse range of categories, including International
|
||||
Wine, Food and Equipment; International Leather and Footwear;
|
||||
International Tea, Ceramics, Jewelry, Watches, Crafts and Art;
|
||||
International Hardware, Building Materials and Interior Decoration;
|
||||
International New Energy and Emerging Industries Technology.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong>,
|
||||
commented, “INTEX Osaka is a famous International Trade Fair and
|
||||
Exhibition in Collaboration with the 2025 Osaka Expo. It is expected to
|
||||
draw numerous visitors, presenting a valuable opportunity for marketing
|
||||
and exposure. This strategic cooperation highlights the Company's
|
||||
extensive network resources, facilitating the identification of suitable
|
||||
businesses or Key Opinion Leaders (“KOLs”) to participate in
|
||||
international trade fairs, bolstering their reputation and influence.”
|
||||
</p>
|
||||
<p>
|
||||
In addition, the Company launched its new SaaS products for the talented
|
||||
individuals in March 2025, which is anticipated to generate recurring
|
||||
revenue streams while also scaling rapidly to capture a large customer
|
||||
base over time. The talented individuals subscribing for our SaaS
|
||||
products would gain access to abundant resources, such as brand /
|
||||
product partnership and sponsorship, affiliate marketing and product
|
||||
placement, IP protection services, among others. FiEE Inc. has signed
|
||||
sales contracts with 40 new customers, securing over US$200,000 in
|
||||
expected revenue in less than two months.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation to seize
|
||||
market opportunities with its innovative brand management solutions for
|
||||
underrecognized talents. It is offering multi-faceted IoT-enabled
|
||||
Connectivity Solutions for the talented individuals in the market,
|
||||
including Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales
|
||||
& Licensing, SAAS Solutions, and Professional To-C and To-B Services
|
||||
& Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for the talented individuals, aiming to elevate their personal
|
||||
brand and influence. Leveraging a robust technological foundation on
|
||||
cybersecurity, market analysis, AI and big data analysis, the Company is
|
||||
also positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s long-term goal is to build a unique KOL community with
|
||||
billions of fans, empowering them to achieve sustained success in the
|
||||
digital landscape. With its new positioning, the Company believes it
|
||||
will reach new heights and create long-lasting value for its
|
||||
shareholders.
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging its expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.’s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the benefits of the strategic agency and
|
||||
cooperation agreement entered into with Beijing Yilian; the expected
|
||||
success of the Company’s new SaaS products; the Company’s business
|
||||
strategy, including its strategic transformation; and the Company’s
|
||||
ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company’s expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company’s business and the actions it may take in response thereto; the
|
||||
Company’s ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward-looking statements are included under the
|
||||
caption “Risk Factors” in the Company’s Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company’s
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -12,31 +345,15 @@ import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
|
||||
const state = reactive({
|
||||
id: "", // 新闻id
|
||||
date: "",
|
||||
});
|
||||
onMounted(() => {
|
||||
if (route.query.id) {
|
||||
state.id = route.query.id;
|
||||
if (route.query.date) {
|
||||
state.date = route.query.date;
|
||||
}
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
const myRichText = document.getElementById('my-richText')
|
||||
myRichText.innerHTML = res.data.data.content
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,6 +1,339 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div id="my-richText"></div>
|
||||
<template v-if="state.date === 'May 30, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Announces Reinitiation of Trading on Nasdaq</strong>
|
||||
</h2>
|
||||
<p>May 30, 2025</p>
|
||||
<p>
|
||||
<em>Company will resume trading under its existing symbol "MINM"</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Hong Kong, May 30, 2025 </strong>— FiEE, Inc. (“FiEE, Inc.” or
|
||||
the “Company”), a technology company integrating IoT, connectivity and
|
||||
AI to redefine brand management solutions in the digital era, is pleased
|
||||
to announce that following a hearing before the Nasdaq Hearings Panel
|
||||
(the “Panel”) on May 13, 2025, the Panel issued a decision on May 29,
|
||||
2025, stating that Nasdaq will reinstate trading of the Company's common
|
||||
stock on the Nasdaq Capital Market at the open of business on Monday,
|
||||
June 2, 2025 under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, </strong>commented,
|
||||
"We are honored to announce the reinitiation of trading of our common
|
||||
stock on Nasdaq, a significant milestone that reflects our unwavering
|
||||
commitment to operational excellence and strategic growth. We extend our
|
||||
sincere gratitude to the Nasdaq team for their prompt review and
|
||||
approval of our request, affirming our compliance with all applicable
|
||||
criteria for continued listing on the Nasdaq Capital Market.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation aimed at
|
||||
capitalizing on broader market opportunities. Central to this evolution
|
||||
is our integrated approach, where cyber-hardened IoT connectivity
|
||||
converges with AI-driven content creation and audience targeting. This
|
||||
synergy is designed to empower Key Opinion Leaders (KOLs) and brands to
|
||||
achieve accelerated growth and deeper audience engagement. Leveraging
|
||||
IoT-connectivity solutions, AI and big data analytics, we are capable of
|
||||
delivering intelligent, multimedia and multilingual content tailored to
|
||||
diverse audiences. Coupling with AI targeting analysis, we enhance
|
||||
audience targeting capabilities, ensuring effective content placement
|
||||
and personalized promotions.
|
||||
</p>
|
||||
<p>
|
||||
As we advance, our focus remains on continuous innovation and strategic
|
||||
initiatives that drive long- term growth and shareholder value."
|
||||
</p>
|
||||
<h3>About FiEE, Inc.</h3>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ: MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand our technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and artificial intelligence ("AI") to explore new
|
||||
business prospects and extend our global footprint.
|
||||
</p>
|
||||
<p>
|
||||
Our services are structured into four key categories: Cloud-Managed
|
||||
Connectivity (WiFi) Platform, IoT Hardware Sales & Licensing, SAAS
|
||||
Solutions, and Professional To-C and To-B Services & Support.
|
||||
Notably, we have introduced our innovative Software as a Service
|
||||
("SaaS") solutions, which integrate our AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of Key Opinion Leaders (KOLs)
|
||||
on major social media platforms worldwide, assisting them in developing,
|
||||
managing, and optimizing their digital presence across global platforms.
|
||||
Our services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<h3>Forward-Looking Statements</h3>
|
||||
<p>
|
||||
This communication contains forward-looking statements which include,
|
||||
but are not limited to, statements regarding the Company's listing of
|
||||
its common stock on Nasdaq; the impact of the listing; the Company's
|
||||
business strategy, including its strategic transformation; and the
|
||||
Company's ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company's expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company's business and the actions it may take in response thereto; the
|
||||
Company's ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward- looking statements are included under the
|
||||
caption "Risk Factors" in the Company's Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company's
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at
|
||||
<a href="http://www.sec.gov/">www.sec.gov.</a>
|
||||
</p>
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 2, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Closes Its First Day of Trading on NASDAQ </strong>
|
||||
</h2>
|
||||
<p>June 2, 2025</p>
|
||||
<p><em>Company resumed trading under its existing symbol "MINM" </em></p>
|
||||
<p>
|
||||
<strong>Hong Kong, 2 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, commenced the trading of its common stock on Monday, June
|
||||
2, 2025 on the Nasdaq Capital Market under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
With the vision of growing Key Opinion Leaders (“KOLs”) in the market,
|
||||
FiEE, Inc. is currently strategically transforming to seize market
|
||||
opportunities with its innovative brand management solutions for the
|
||||
underrecognized talents. Since 2023, FiEE, Inc. has been pivoting to a
|
||||
Software First business model through enhancing its MinimOS cloud
|
||||
platform and API suite for ISPs/OEMs, as well merging with e2Companies
|
||||
to broaden its technology and revenue base. Currently, it is offering
|
||||
multi-faceted IoT-enabled Connectivity Solutions for the talented
|
||||
individuals in the market, including Cloud-Managed Connectivity (WiFi)
|
||||
Platform, IoT Hardware Sales & Licensing, SAAS Solutions, and
|
||||
Professional To-C and To-B Services & Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is addressing significant
|
||||
challenges faced by talented individuals in the market, such as
|
||||
insufficient promotion channels, overdependence on offline events, and
|
||||
high costs of conventional advertising. It is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for these talents, aiming to elevate their personal brand and
|
||||
influence. Leveraging robust technological foundation on cybersecurity,
|
||||
market analysis, AI and big data analysis, the Company is also
|
||||
positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong> added,
|
||||
"We are glad to witness our common stock resumed trading on Nasdaq. In
|
||||
the foreseeable future, I plan to lead the team to continuously enhance
|
||||
our technological capabilities, utilizing AI, big data analysis, and our
|
||||
long-standing IoT-enabled Connectivity Solutions to match potential
|
||||
users in the market and provide them with comprehensive solutions. Our
|
||||
long-term goal is to build a unique KOL community with billions of fans,
|
||||
empowering them to achieve sustained success in the digital landscape.
|
||||
We are confident that with our new positioning, FiEE, Inc. will reach
|
||||
new heights and create long-lasting value for our shareholders.”
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.'s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.'s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the Company's listing of its common stock on
|
||||
Nasdaq; the impact of the listing; the Company's business strategy,
|
||||
including its strategic transformation; and the Company's ability to
|
||||
drive long-term growth and shareholder value. These forward-looking
|
||||
statements are subject to the safe harbor provisions under the Private
|
||||
Securities Litigation Reform Act of 1995. The Company's expectations and
|
||||
beliefs regarding these matters may not materialize. Actual outcomes and
|
||||
results may differ materially from those contemplated by these
|
||||
forward-looking statements as a result of uncertainties, risks, and
|
||||
changes in circumstances, including but not limited to risks and
|
||||
uncertainties related to: the ability of the Company to maintain
|
||||
compliance with the Nasdaq continued listing standards; the impact of
|
||||
fluctuations in global financial markets on the Company's business and
|
||||
the actions it may take in response thereto; the Company's ability to
|
||||
execute its plans and strategies; and the impact of government laws and
|
||||
regulations. Additional risks and uncertainties that could cause actual
|
||||
outcomes and results to differ materially from those contemplated by the
|
||||
forward-looking statements are included under the caption "Risk Factors"
|
||||
in the Company's Quarterly Report on Form 10-Q for the quarter ended
|
||||
March 31, 2025 and elsewhere in the Company's subsequent reports on Form
|
||||
10-K, Form 10-Q or Form 8-K filed with the U.S. Securities and Exchange
|
||||
Commission from time to time and available at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 3, 2025'">
|
||||
<h2>
|
||||
<strong
|
||||
>FiEE, Inc. seized market opportunities through 2025 Osaka
|
||||
Expo</strong
|
||||
>
|
||||
</h2>
|
||||
<p>3 June, 2025</p>
|
||||
<p>
|
||||
<strong>Hong Kong, 3 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, is pleased to announce significant business updates.
|
||||
</p>
|
||||
<p>
|
||||
Recently, FiEE, Inc. has entered into a strategic agency and cooperation
|
||||
agreement with Beijing Yilian World Expo Business Management Group Co.,
|
||||
Ltd. (“Beijing Yilian”). The Company is appointed as the agent to
|
||||
introduce businesses to participate in the international trade fair held
|
||||
at INTEX Osaka. The trade fair will be held from mid-June to August
|
||||
2025, featuring a diverse range of categories, including International
|
||||
Wine, Food and Equipment; International Leather and Footwear;
|
||||
International Tea, Ceramics, Jewelry, Watches, Crafts and Art;
|
||||
International Hardware, Building Materials and Interior Decoration;
|
||||
International New Energy and Emerging Industries Technology.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong>,
|
||||
commented, “INTEX Osaka is a famous International Trade Fair and
|
||||
Exhibition in Collaboration with the 2025 Osaka Expo. It is expected to
|
||||
draw numerous visitors, presenting a valuable opportunity for marketing
|
||||
and exposure. This strategic cooperation highlights the Company's
|
||||
extensive network resources, facilitating the identification of suitable
|
||||
businesses or Key Opinion Leaders (“KOLs”) to participate in
|
||||
international trade fairs, bolstering their reputation and influence.”
|
||||
</p>
|
||||
<p>
|
||||
In addition, the Company launched its new SaaS products for the talented
|
||||
individuals in March 2025, which is anticipated to generate recurring
|
||||
revenue streams while also scaling rapidly to capture a large customer
|
||||
base over time. The talented individuals subscribing for our SaaS
|
||||
products would gain access to abundant resources, such as brand /
|
||||
product partnership and sponsorship, affiliate marketing and product
|
||||
placement, IP protection services, among others. FiEE Inc. has signed
|
||||
sales contracts with 40 new customers, securing over US$200,000 in
|
||||
expected revenue in less than two months.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation to seize
|
||||
market opportunities with its innovative brand management solutions for
|
||||
underrecognized talents. It is offering multi-faceted IoT-enabled
|
||||
Connectivity Solutions for the talented individuals in the market,
|
||||
including Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales
|
||||
& Licensing, SAAS Solutions, and Professional To-C and To-B Services
|
||||
& Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for the talented individuals, aiming to elevate their personal
|
||||
brand and influence. Leveraging a robust technological foundation on
|
||||
cybersecurity, market analysis, AI and big data analysis, the Company is
|
||||
also positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s long-term goal is to build a unique KOL community with
|
||||
billions of fans, empowering them to achieve sustained success in the
|
||||
digital landscape. With its new positioning, the Company believes it
|
||||
will reach new heights and create long-lasting value for its
|
||||
shareholders.
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging its expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.’s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the benefits of the strategic agency and
|
||||
cooperation agreement entered into with Beijing Yilian; the expected
|
||||
success of the Company’s new SaaS products; the Company’s business
|
||||
strategy, including its strategic transformation; and the Company’s
|
||||
ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company’s expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company’s business and the actions it may take in response thereto; the
|
||||
Company’s ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward-looking statements are included under the
|
||||
caption “Risk Factors” in the Company’s Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company’s
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -12,31 +345,15 @@ import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
|
||||
const state = reactive({
|
||||
id: "", // 新闻id
|
||||
date: "",
|
||||
});
|
||||
onMounted(() => {
|
||||
if (route.query.id) {
|
||||
state.id = route.query.id;
|
||||
if (route.query.date) {
|
||||
state.date = route.query.date;
|
||||
}
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
const myRichText = document.getElementById('my-richText')
|
||||
myRichText.innerHTML = res.data.data.content
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.page-container {
|
||||
|
@ -1,6 +1,340 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div id="my-richText"></div>
|
||||
<template v-if="state.date === 'May 30, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Announces Reinitiation of Trading on Nasdaq</strong>
|
||||
</h2>
|
||||
<p>May 30, 2025</p>
|
||||
<p>
|
||||
<em>Company will resume trading under its existing symbol "MINM"</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Hong Kong, May 30, 2025 </strong>— FiEE, Inc. (“FiEE, Inc.” or
|
||||
the “Company”), a technology company integrating IoT, connectivity and
|
||||
AI to redefine brand management solutions in the digital era, is pleased
|
||||
to announce that following a hearing before the Nasdaq Hearings Panel
|
||||
(the “Panel”) on May 13, 2025, the Panel issued a decision on May 29,
|
||||
2025, stating that Nasdaq will reinstate trading of the Company's common
|
||||
stock on the Nasdaq Capital Market at the open of business on Monday,
|
||||
June 2, 2025 under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, </strong>commented,
|
||||
"We are honored to announce the reinitiation of trading of our common
|
||||
stock on Nasdaq, a significant milestone that reflects our unwavering
|
||||
commitment to operational excellence and strategic growth. We extend our
|
||||
sincere gratitude to the Nasdaq team for their prompt review and
|
||||
approval of our request, affirming our compliance with all applicable
|
||||
criteria for continued listing on the Nasdaq Capital Market.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation aimed at
|
||||
capitalizing on broader market opportunities. Central to this evolution
|
||||
is our integrated approach, where cyber-hardened IoT connectivity
|
||||
converges with AI-driven content creation and audience targeting. This
|
||||
synergy is designed to empower Key Opinion Leaders (KOLs) and brands to
|
||||
achieve accelerated growth and deeper audience engagement. Leveraging
|
||||
IoT-connectivity solutions, AI and big data analytics, we are capable of
|
||||
delivering intelligent, multimedia and multilingual content tailored to
|
||||
diverse audiences. Coupling with AI targeting analysis, we enhance
|
||||
audience targeting capabilities, ensuring effective content placement
|
||||
and personalized promotions.
|
||||
</p>
|
||||
<p>
|
||||
As we advance, our focus remains on continuous innovation and strategic
|
||||
initiatives that drive long- term growth and shareholder value."
|
||||
</p>
|
||||
<h3>About FiEE, Inc.</h3>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ: MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand our technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and artificial intelligence ("AI") to explore new
|
||||
business prospects and extend our global footprint.
|
||||
</p>
|
||||
<p>
|
||||
Our services are structured into four key categories: Cloud-Managed
|
||||
Connectivity (WiFi) Platform, IoT Hardware Sales & Licensing, SAAS
|
||||
Solutions, and Professional To-C and To-B Services & Support.
|
||||
Notably, we have introduced our innovative Software as a Service
|
||||
("SaaS") solutions, which integrate our AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of Key Opinion Leaders (KOLs)
|
||||
on major social media platforms worldwide, assisting them in developing,
|
||||
managing, and optimizing their digital presence across global platforms.
|
||||
Our services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<h3>Forward-Looking Statements</h3>
|
||||
<p>
|
||||
This communication contains forward-looking statements which include,
|
||||
but are not limited to, statements regarding the Company's listing of
|
||||
its common stock on Nasdaq; the impact of the listing; the Company's
|
||||
business strategy, including its strategic transformation; and the
|
||||
Company's ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company's expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company's business and the actions it may take in response thereto; the
|
||||
Company's ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward- looking statements are included under the
|
||||
caption "Risk Factors" in the Company's Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company's
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at
|
||||
<a href="http://www.sec.gov/">www.sec.gov.</a>
|
||||
</p>
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 2, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Closes Its First Day of Trading on NASDAQ </strong>
|
||||
</h2>
|
||||
<p>June 2, 2025</p>
|
||||
<p><em>Company resumed trading under its existing symbol "MINM" </em></p>
|
||||
<p>
|
||||
<strong>Hong Kong, 2 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, commenced the trading of its common stock on Monday, June
|
||||
2, 2025 on the Nasdaq Capital Market under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
With the vision of growing Key Opinion Leaders (“KOLs”) in the market,
|
||||
FiEE, Inc. is currently strategically transforming to seize market
|
||||
opportunities with its innovative brand management solutions for the
|
||||
underrecognized talents. Since 2023, FiEE, Inc. has been pivoting to a
|
||||
Software First business model through enhancing its MinimOS cloud
|
||||
platform and API suite for ISPs/OEMs, as well merging with e2Companies
|
||||
to broaden its technology and revenue base. Currently, it is offering
|
||||
multi-faceted IoT-enabled Connectivity Solutions for the talented
|
||||
individuals in the market, including Cloud-Managed Connectivity (WiFi)
|
||||
Platform, IoT Hardware Sales & Licensing, SAAS Solutions, and
|
||||
Professional To-C and To-B Services & Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is addressing significant
|
||||
challenges faced by talented individuals in the market, such as
|
||||
insufficient promotion channels, overdependence on offline events, and
|
||||
high costs of conventional advertising. It is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for these talents, aiming to elevate their personal brand and
|
||||
influence. Leveraging robust technological foundation on cybersecurity,
|
||||
market analysis, AI and big data analysis, the Company is also
|
||||
positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong> added,
|
||||
"We are glad to witness our common stock resumed trading on Nasdaq. In
|
||||
the foreseeable future, I plan to lead the team to continuously enhance
|
||||
our technological capabilities, utilizing AI, big data analysis, and our
|
||||
long-standing IoT-enabled Connectivity Solutions to match potential
|
||||
users in the market and provide them with comprehensive solutions. Our
|
||||
long-term goal is to build a unique KOL community with billions of fans,
|
||||
empowering them to achieve sustained success in the digital landscape.
|
||||
We are confident that with our new positioning, FiEE, Inc. will reach
|
||||
new heights and create long-lasting value for our shareholders.”
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.'s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.'s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the Company's listing of its common stock on
|
||||
Nasdaq; the impact of the listing; the Company's business strategy,
|
||||
including its strategic transformation; and the Company's ability to
|
||||
drive long-term growth and shareholder value. These forward-looking
|
||||
statements are subject to the safe harbor provisions under the Private
|
||||
Securities Litigation Reform Act of 1995. The Company's expectations and
|
||||
beliefs regarding these matters may not materialize. Actual outcomes and
|
||||
results may differ materially from those contemplated by these
|
||||
forward-looking statements as a result of uncertainties, risks, and
|
||||
changes in circumstances, including but not limited to risks and
|
||||
uncertainties related to: the ability of the Company to maintain
|
||||
compliance with the Nasdaq continued listing standards; the impact of
|
||||
fluctuations in global financial markets on the Company's business and
|
||||
the actions it may take in response thereto; the Company's ability to
|
||||
execute its plans and strategies; and the impact of government laws and
|
||||
regulations. Additional risks and uncertainties that could cause actual
|
||||
outcomes and results to differ materially from those contemplated by the
|
||||
forward-looking statements are included under the caption "Risk Factors"
|
||||
in the Company's Quarterly Report on Form 10-Q for the quarter ended
|
||||
March 31, 2025 and elsewhere in the Company's subsequent reports on Form
|
||||
10-K, Form 10-Q or Form 8-K filed with the U.S. Securities and Exchange
|
||||
Commission from time to time and available at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
|
||||
<template v-if="state.date === 'June 3, 2025'">
|
||||
<h2>
|
||||
<strong
|
||||
>FiEE, Inc. seized market opportunities through 2025 Osaka
|
||||
Expo</strong
|
||||
>
|
||||
</h2>
|
||||
<p>3 June, 2025</p>
|
||||
<p>
|
||||
<strong>Hong Kong, 3 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, is pleased to announce significant business updates.
|
||||
</p>
|
||||
<p>
|
||||
Recently, FiEE, Inc. has entered into a strategic agency and cooperation
|
||||
agreement with Beijing Yilian World Expo Business Management Group Co.,
|
||||
Ltd. (“Beijing Yilian”). The Company is appointed as the agent to
|
||||
introduce businesses to participate in the international trade fair held
|
||||
at INTEX Osaka. The trade fair will be held from mid-June to August
|
||||
2025, featuring a diverse range of categories, including International
|
||||
Wine, Food and Equipment; International Leather and Footwear;
|
||||
International Tea, Ceramics, Jewelry, Watches, Crafts and Art;
|
||||
International Hardware, Building Materials and Interior Decoration;
|
||||
International New Energy and Emerging Industries Technology.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong>,
|
||||
commented, “INTEX Osaka is a famous International Trade Fair and
|
||||
Exhibition in Collaboration with the 2025 Osaka Expo. It is expected to
|
||||
draw numerous visitors, presenting a valuable opportunity for marketing
|
||||
and exposure. This strategic cooperation highlights the Company's
|
||||
extensive network resources, facilitating the identification of suitable
|
||||
businesses or Key Opinion Leaders (“KOLs”) to participate in
|
||||
international trade fairs, bolstering their reputation and influence.”
|
||||
</p>
|
||||
<p>
|
||||
In addition, the Company launched its new SaaS products for the talented
|
||||
individuals in March 2025, which is anticipated to generate recurring
|
||||
revenue streams while also scaling rapidly to capture a large customer
|
||||
base over time. The talented individuals subscribing for our SaaS
|
||||
products would gain access to abundant resources, such as brand /
|
||||
product partnership and sponsorship, affiliate marketing and product
|
||||
placement, IP protection services, among others. FiEE Inc. has signed
|
||||
sales contracts with 40 new customers, securing over US$200,000 in
|
||||
expected revenue in less than two months.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation to seize
|
||||
market opportunities with its innovative brand management solutions for
|
||||
underrecognized talents. It is offering multi-faceted IoT-enabled
|
||||
Connectivity Solutions for the talented individuals in the market,
|
||||
including Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales
|
||||
& Licensing, SAAS Solutions, and Professional To-C and To-B Services
|
||||
& Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for the talented individuals, aiming to elevate their personal
|
||||
brand and influence. Leveraging a robust technological foundation on
|
||||
cybersecurity, market analysis, AI and big data analysis, the Company is
|
||||
also positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s long-term goal is to build a unique KOL community with
|
||||
billions of fans, empowering them to achieve sustained success in the
|
||||
digital landscape. With its new positioning, the Company believes it
|
||||
will reach new heights and create long-lasting value for its
|
||||
shareholders.
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging its expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.’s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the benefits of the strategic agency and
|
||||
cooperation agreement entered into with Beijing Yilian; the expected
|
||||
success of the Company’s new SaaS products; the Company’s business
|
||||
strategy, including its strategic transformation; and the Company’s
|
||||
ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company’s expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company’s business and the actions it may take in response thereto; the
|
||||
Company’s ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward-looking statements are included under the
|
||||
caption “Risk Factors” in the Company’s Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company’s
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -12,31 +346,15 @@ import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
|
||||
const state = reactive({
|
||||
id: "", // 新闻id
|
||||
date: "",
|
||||
});
|
||||
onMounted(() => {
|
||||
if (route.query.id) {
|
||||
state.id = route.query.id;
|
||||
if (route.query.date) {
|
||||
state.date = route.query.date;
|
||||
}
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
const myRichText = document.getElementById('my-richText')
|
||||
myRichText.innerHTML = res.data.data.content
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,6 +1,340 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div id="my-richText"></div>
|
||||
<template v-if="state.date === 'May 30, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Announces Reinitiation of Trading on Nasdaq</strong>
|
||||
</h2>
|
||||
<p>May 30, 2025</p>
|
||||
<p>
|
||||
<em>Company will resume trading under its existing symbol "MINM"</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Hong Kong, May 30, 2025 </strong>— FiEE, Inc. (“FiEE, Inc.” or
|
||||
the “Company”), a technology company integrating IoT, connectivity and
|
||||
AI to redefine brand management solutions in the digital era, is pleased
|
||||
to announce that following a hearing before the Nasdaq Hearings Panel
|
||||
(the “Panel”) on May 13, 2025, the Panel issued a decision on May 29,
|
||||
2025, stating that Nasdaq will reinstate trading of the Company's common
|
||||
stock on the Nasdaq Capital Market at the open of business on Monday,
|
||||
June 2, 2025 under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, </strong>commented,
|
||||
"We are honored to announce the reinitiation of trading of our common
|
||||
stock on Nasdaq, a significant milestone that reflects our unwavering
|
||||
commitment to operational excellence and strategic growth. We extend our
|
||||
sincere gratitude to the Nasdaq team for their prompt review and
|
||||
approval of our request, affirming our compliance with all applicable
|
||||
criteria for continued listing on the Nasdaq Capital Market.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation aimed at
|
||||
capitalizing on broader market opportunities. Central to this evolution
|
||||
is our integrated approach, where cyber-hardened IoT connectivity
|
||||
converges with AI-driven content creation and audience targeting. This
|
||||
synergy is designed to empower Key Opinion Leaders (KOLs) and brands to
|
||||
achieve accelerated growth and deeper audience engagement. Leveraging
|
||||
IoT-connectivity solutions, AI and big data analytics, we are capable of
|
||||
delivering intelligent, multimedia and multilingual content tailored to
|
||||
diverse audiences. Coupling with AI targeting analysis, we enhance
|
||||
audience targeting capabilities, ensuring effective content placement
|
||||
and personalized promotions.
|
||||
</p>
|
||||
<p>
|
||||
As we advance, our focus remains on continuous innovation and strategic
|
||||
initiatives that drive long- term growth and shareholder value."
|
||||
</p>
|
||||
<h3>About FiEE, Inc.</h3>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ: MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand our technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and artificial intelligence ("AI") to explore new
|
||||
business prospects and extend our global footprint.
|
||||
</p>
|
||||
<p>
|
||||
Our services are structured into four key categories: Cloud-Managed
|
||||
Connectivity (WiFi) Platform, IoT Hardware Sales & Licensing, SAAS
|
||||
Solutions, and Professional To-C and To-B Services & Support.
|
||||
Notably, we have introduced our innovative Software as a Service
|
||||
("SaaS") solutions, which integrate our AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of Key Opinion Leaders (KOLs)
|
||||
on major social media platforms worldwide, assisting them in developing,
|
||||
managing, and optimizing their digital presence across global platforms.
|
||||
Our services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<h3>Forward-Looking Statements</h3>
|
||||
<p>
|
||||
This communication contains forward-looking statements which include,
|
||||
but are not limited to, statements regarding the Company's listing of
|
||||
its common stock on Nasdaq; the impact of the listing; the Company's
|
||||
business strategy, including its strategic transformation; and the
|
||||
Company's ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company's expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company's business and the actions it may take in response thereto; the
|
||||
Company's ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward- looking statements are included under the
|
||||
caption "Risk Factors" in the Company's Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company's
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at
|
||||
<a href="http://www.sec.gov/">www.sec.gov.</a>
|
||||
</p>
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
<template v-if="state.date === 'June 2, 2025'">
|
||||
<h2>
|
||||
<strong>FiEE, Inc. Closes Its First Day of Trading on NASDAQ </strong>
|
||||
</h2>
|
||||
<p>June 2, 2025</p>
|
||||
<p><em>Company resumed trading under its existing symbol "MINM" </em></p>
|
||||
<p>
|
||||
<strong>Hong Kong, 2 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, commenced the trading of its common stock on Monday, June
|
||||
2, 2025 on the Nasdaq Capital Market under the ticker symbol "MINM".
|
||||
</p>
|
||||
<p>
|
||||
With the vision of growing Key Opinion Leaders (“KOLs”) in the market,
|
||||
FiEE, Inc. is currently strategically transforming to seize market
|
||||
opportunities with its innovative brand management solutions for the
|
||||
underrecognized talents. Since 2023, FiEE, Inc. has been pivoting to a
|
||||
Software First business model through enhancing its MinimOS cloud
|
||||
platform and API suite for ISPs/OEMs, as well merging with e2Companies
|
||||
to broaden its technology and revenue base. Currently, it is offering
|
||||
multi-faceted IoT-enabled Connectivity Solutions for the talented
|
||||
individuals in the market, including Cloud-Managed Connectivity (WiFi)
|
||||
Platform, IoT Hardware Sales & Licensing, SAAS Solutions, and
|
||||
Professional To-C and To-B Services & Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is addressing significant
|
||||
challenges faced by talented individuals in the market, such as
|
||||
insufficient promotion channels, overdependence on offline events, and
|
||||
high costs of conventional advertising. It is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for these talents, aiming to elevate their personal brand and
|
||||
influence. Leveraging robust technological foundation on cybersecurity,
|
||||
market analysis, AI and big data analysis, the Company is also
|
||||
positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong> added,
|
||||
"We are glad to witness our common stock resumed trading on Nasdaq. In
|
||||
the foreseeable future, I plan to lead the team to continuously enhance
|
||||
our technological capabilities, utilizing AI, big data analysis, and our
|
||||
long-standing IoT-enabled Connectivity Solutions to match potential
|
||||
users in the market and provide them with comprehensive solutions. Our
|
||||
long-term goal is to build a unique KOL community with billions of fans,
|
||||
empowering them to achieve sustained success in the digital landscape.
|
||||
We are confident that with our new positioning, FiEE, Inc. will reach
|
||||
new heights and create long-lasting value for our shareholders.”
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging the expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.'s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.'s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the Company's listing of its common stock on
|
||||
Nasdaq; the impact of the listing; the Company's business strategy,
|
||||
including its strategic transformation; and the Company's ability to
|
||||
drive long-term growth and shareholder value. These forward-looking
|
||||
statements are subject to the safe harbor provisions under the Private
|
||||
Securities Litigation Reform Act of 1995. The Company's expectations and
|
||||
beliefs regarding these matters may not materialize. Actual outcomes and
|
||||
results may differ materially from those contemplated by these
|
||||
forward-looking statements as a result of uncertainties, risks, and
|
||||
changes in circumstances, including but not limited to risks and
|
||||
uncertainties related to: the ability of the Company to maintain
|
||||
compliance with the Nasdaq continued listing standards; the impact of
|
||||
fluctuations in global financial markets on the Company's business and
|
||||
the actions it may take in response thereto; the Company's ability to
|
||||
execute its plans and strategies; and the impact of government laws and
|
||||
regulations. Additional risks and uncertainties that could cause actual
|
||||
outcomes and results to differ materially from those contemplated by the
|
||||
forward-looking statements are included under the caption "Risk Factors"
|
||||
in the Company's Quarterly Report on Form 10-Q for the quarter ended
|
||||
March 31, 2025 and elsewhere in the Company's subsequent reports on Form
|
||||
10-K, Form 10-Q or Form 8-K filed with the U.S. Securities and Exchange
|
||||
Commission from time to time and available at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
|
||||
<template v-if="state.date === 'June 3, 2025'">
|
||||
<h2>
|
||||
<strong
|
||||
>FiEE, Inc. seized market opportunities through 2025 Osaka
|
||||
Expo</strong
|
||||
>
|
||||
</h2>
|
||||
<p>3 June, 2025</p>
|
||||
<p>
|
||||
<strong>Hong Kong, 3 June 2025 </strong>— FiEE, Inc. (NASDAQ:MINM)
|
||||
(“FiEE, Inc.” or the “Company”), a technology company integrating IoT,
|
||||
connectivity and AI to redefine brand management solutions in the
|
||||
digital era, is pleased to announce significant business updates.
|
||||
</p>
|
||||
<p>
|
||||
Recently, FiEE, Inc. has entered into a strategic agency and cooperation
|
||||
agreement with Beijing Yilian World Expo Business Management Group Co.,
|
||||
Ltd. (“Beijing Yilian”). The Company is appointed as the agent to
|
||||
introduce businesses to participate in the international trade fair held
|
||||
at INTEX Osaka. The trade fair will be held from mid-June to August
|
||||
2025, featuring a diverse range of categories, including International
|
||||
Wine, Food and Equipment; International Leather and Footwear;
|
||||
International Tea, Ceramics, Jewelry, Watches, Crafts and Art;
|
||||
International Hardware, Building Materials and Interior Decoration;
|
||||
International New Energy and Emerging Industries Technology.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rafael Li, Chief Executive Officer of FiEE, Inc.</strong>,
|
||||
commented, “INTEX Osaka is a famous International Trade Fair and
|
||||
Exhibition in Collaboration with the 2025 Osaka Expo. It is expected to
|
||||
draw numerous visitors, presenting a valuable opportunity for marketing
|
||||
and exposure. This strategic cooperation highlights the Company's
|
||||
extensive network resources, facilitating the identification of suitable
|
||||
businesses or Key Opinion Leaders (“KOLs”) to participate in
|
||||
international trade fairs, bolstering their reputation and influence.”
|
||||
</p>
|
||||
<p>
|
||||
In addition, the Company launched its new SaaS products for the talented
|
||||
individuals in March 2025, which is anticipated to generate recurring
|
||||
revenue streams while also scaling rapidly to capture a large customer
|
||||
base over time. The talented individuals subscribing for our SaaS
|
||||
products would gain access to abundant resources, such as brand /
|
||||
product partnership and sponsorship, affiliate marketing and product
|
||||
placement, IP protection services, among others. FiEE Inc. has signed
|
||||
sales contracts with 40 new customers, securing over US$200,000 in
|
||||
expected revenue in less than two months.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc. is currently undergoing a strategic transformation to seize
|
||||
market opportunities with its innovative brand management solutions for
|
||||
underrecognized talents. It is offering multi-faceted IoT-enabled
|
||||
Connectivity Solutions for the talented individuals in the market,
|
||||
including Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales
|
||||
& Licensing, SAAS Solutions, and Professional To-C and To-B Services
|
||||
& Support.
|
||||
</p>
|
||||
<p>
|
||||
With its innovative positioning, FiEE, Inc. is establishing a
|
||||
comprehensive value ecosystem that offers a secure, diverse and enduring
|
||||
platform for the talented individuals, aiming to elevate their personal
|
||||
brand and influence. Leveraging a robust technological foundation on
|
||||
cybersecurity, market analysis, AI and big data analysis, the Company is
|
||||
also positioned to safeguard original creations, digital arts, NFTs and
|
||||
exclusive content for these talented individuals.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s long-term goal is to build a unique KOL community with
|
||||
billions of fans, empowering them to achieve sustained success in the
|
||||
digital landscape. With its new positioning, the Company believes it
|
||||
will reach new heights and create long-lasting value for its
|
||||
shareholders.
|
||||
</p>
|
||||
<p><strong>About FiEE, Inc.</strong></p>
|
||||
<p>
|
||||
FiEE, Inc. (NASDAQ:MINM), formerly Minim, Inc., was founded in 1977. It
|
||||
has a historical track record of delivering comprehensive WiFi/Software
|
||||
as a Service platform in the market. After years of development, it made
|
||||
the strategic decision to transition to a Software First Model in 2023
|
||||
to expand its technology portfolio and revenue streams. In 2025, FiEE,
|
||||
Inc. rebranded itself as a technology company leveraging its expertise
|
||||
in IoT, connectivity, and AI to explore new business prospects and
|
||||
extend its global footprint.
|
||||
</p>
|
||||
<p>
|
||||
FiEE, Inc.’s services are structured into four key categories:
|
||||
Cloud-Managed Connectivity (WiFi) Platform, IoT Hardware Sales &
|
||||
Licensing, SAAS Solutions, and Professional To-C and To-B Services &
|
||||
Support. Notably, FiEE, Inc. has introduced its innovative Software as a
|
||||
Service solutions, which integrate its AI and data analytics
|
||||
capabilities into content creation and brand management. This initiative
|
||||
has led to the nurturing of a robust pool of KOLs on major social media
|
||||
platforms worldwide, assisting them in developing, managing, and
|
||||
optimizing their digital presence across global platforms. FiEE Inc.’s
|
||||
services include customized graphics and posts, short videos, and
|
||||
editorial calendars tailored to align with brand objectives.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Forward-Looking Statements</strong><br />This communication
|
||||
contains forward-looking statements which include, but are not limited
|
||||
to, statements regarding the benefits of the strategic agency and
|
||||
cooperation agreement entered into with Beijing Yilian; the expected
|
||||
success of the Company’s new SaaS products; the Company’s business
|
||||
strategy, including its strategic transformation; and the Company’s
|
||||
ability to drive long-term growth and shareholder value. These
|
||||
forward-looking statements are subject to the safe harbor provisions
|
||||
under the Private Securities Litigation Reform Act of 1995. The
|
||||
Company’s expectations and beliefs regarding these matters may not
|
||||
materialize. Actual outcomes and results may differ materially from
|
||||
those contemplated by these forward-looking statements as a result of
|
||||
uncertainties, risks, and changes in circumstances, including but not
|
||||
limited to risks and uncertainties related to: the ability of the
|
||||
Company to maintain compliance with the Nasdaq continued listing
|
||||
standards; the impact of fluctuations in global financial markets on the
|
||||
Company’s business and the actions it may take in response thereto; the
|
||||
Company’s ability to execute its plans and strategies; and the impact of
|
||||
government laws and regulations. Additional risks and uncertainties that
|
||||
could cause actual outcomes and results to differ materially from those
|
||||
contemplated by the forward-looking statements are included under the
|
||||
caption “Risk Factors” in the Company’s Quarterly Report on Form 10-Q
|
||||
for the quarter ended March 31, 2025 and elsewhere in the Company’s
|
||||
subsequent reports on Form 10-K, Form 10-Q or Form 8-K filed with the
|
||||
U.S. Securities and Exchange Commission from time to time and available
|
||||
at www.sec.gov.
|
||||
</p>
|
||||
|
||||
<div><strong>Media </strong></div>
|
||||
<a href="mailto:fiee@dlkadvisory.com">fiee@dlkadvisory.com</a>
|
||||
<div>Source: FiEE, Inc.</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -12,31 +346,15 @@ import { useI18n } from "vue-i18n";
|
||||
const { t } = useI18n();
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
import axios from 'axios'
|
||||
|
||||
const state = reactive({
|
||||
id: "", // 新闻id
|
||||
date: "",
|
||||
});
|
||||
onMounted(() => {
|
||||
if (route.query.id) {
|
||||
state.id = route.query.id;
|
||||
if (route.query.date) {
|
||||
state.date = route.query.date;
|
||||
}
|
||||
getPressReleasesInfo();
|
||||
});
|
||||
|
||||
//获取新闻信息
|
||||
const getPressReleasesInfo = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases?id=' + state.id
|
||||
axios.get(url).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
const myRichText = document.getElementById('my-richText')
|
||||
myRichText.innerHTML = res.data.data.content
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,119 +0,0 @@
|
||||
<!-- 从chat-PC接入的文档查看 -->
|
||||
<template>
|
||||
<DocumentEditor
|
||||
id="docEditor"
|
||||
:documentServerUrl="documentServerUrl"
|
||||
:config="config"
|
||||
:events_onDocumentReady="onDocumentReady"
|
||||
:onLoadComponentError="onLoadComponentError"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { DocumentEditor } from "@onlyoffice/document-editor-vue"
|
||||
import { useI18n } from 'vue-i18n'
|
||||
const { t } = useI18n()
|
||||
|
||||
const documentServerUrl = 'https://onlyoffice.fontree.cn'
|
||||
const route = useRoute()
|
||||
|
||||
onMounted(() => {
|
||||
// 动态插入 Content-Security-Policy meta 标签,只在本页面生效
|
||||
if (!document.querySelector('meta[http-equiv="Content-Security-Policy"]')) {
|
||||
const meta = document.createElement('meta')
|
||||
meta.httpEquiv = 'Content-Security-Policy'
|
||||
meta.content = 'upgrade-insecure-requests'
|
||||
document.head.appendChild(meta)
|
||||
}
|
||||
})
|
||||
|
||||
// 判断文件类型
|
||||
function getDocumentTypes(url) {
|
||||
const extension = url.split('.').pop().toLowerCase()
|
||||
const types = {
|
||||
'docx': { fileType: 'docx', documentType: 'word' },
|
||||
'doc': { fileType: 'doc', documentType: 'word' },
|
||||
'xlsx': { fileType: 'xlsx', documentType: 'cell' },
|
||||
'xls': { fileType: 'xls', documentType: 'cell' },
|
||||
'pptx': { fileType: 'pptx', documentType: 'slide' },
|
||||
'ppt': { fileType: 'ppt', documentType: 'slide' },
|
||||
'pdf': { fileType: 'pdf', documentType: 'word' }
|
||||
}
|
||||
return types[extension] || { fileType: 'docx', documentType: 'word' }
|
||||
}
|
||||
|
||||
const url = route.query.url
|
||||
if (!url) {
|
||||
alert(t('PAGES.FiEEInfoManage.document.readFailed'))
|
||||
}
|
||||
let attachmentName = route.query.attachmentName
|
||||
const fileName = attachmentName ? attachmentName : url ? url.split('/').pop() : ''
|
||||
const { fileType, documentType } = getDocumentTypes(url || '')
|
||||
|
||||
const config = {
|
||||
document: {
|
||||
fileType,
|
||||
key: 'doc_' + Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15),
|
||||
title: fileName,
|
||||
url
|
||||
},
|
||||
documentType,
|
||||
editorConfig: {
|
||||
|
||||
mode: 'view',
|
||||
lang: 'en-US',
|
||||
user: {
|
||||
id: 'user_' + new Date().getTime(),
|
||||
name: 'Guest User'
|
||||
},
|
||||
customization: {
|
||||
about: false, // 不显示“关于”页面
|
||||
help: false, // 不显示帮助菜单
|
||||
chat: false,
|
||||
commentAuthorOnly: false,
|
||||
compactToolbar: true,
|
||||
hideRightMenu: false, // 隐藏右侧菜单
|
||||
compatibility: true,
|
||||
showReviewChanges: false,
|
||||
loaderLogo: '', // 设置为空字符串来隐藏加载 logo
|
||||
logo: {
|
||||
image: '', // 设置为空字符串
|
||||
imageDark: '', // 设置为空字符串
|
||||
url: '', // 设置为空字符串
|
||||
visible: false // 设置为 false 来隐藏 logo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const onDocumentReady = () => {
|
||||
// console.log("文档加载完成")
|
||||
}
|
||||
|
||||
const onLoadComponentError = (errorCode, errorDescription) => {
|
||||
switch(errorCode) {
|
||||
case -1: // 加载组件时发生未知错误
|
||||
// console.log(errorDescription)
|
||||
break
|
||||
case -2: // 从文档服务器加载 DocsAPI 时发生错误
|
||||
// console.log(errorDescription)
|
||||
break
|
||||
case -3: // DocsAPI 未定义
|
||||
// console.log(errorDescription)
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
iframe[name="frameEditor"] {
|
||||
width: 100% !important;
|
||||
height: 100vh !important;
|
||||
min-height: 100vh !important;
|
||||
border: none !important;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,9 +1,8 @@
|
||||
<template>
|
||||
<div class="press-releases-page">
|
||||
<n-infinite-scroll :distance="0" @load="doLoadMore">
|
||||
<main class="p-[35px] max-w-[1200px] mx-auto">
|
||||
<div class="title mb-[20px]">
|
||||
{{ t('press_releases.title') }}
|
||||
{{ t("press_releases.title") }}
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<n-select
|
||||
@ -22,57 +21,36 @@
|
||||
@click="handleSearch"
|
||||
class="search-button w-[80px]"
|
||||
>
|
||||
{{ t('press_releases.search.button') }}
|
||||
{{ t("press_releases.search.button") }}
|
||||
</n-button>
|
||||
</div>
|
||||
<div v-for="(item, idx) in state.filterNewsData" :key="idx">
|
||||
<div class="news-item mt-[10px]">
|
||||
<div class="news-item-date">{{ item.date }}</div>
|
||||
<div
|
||||
class="news-item-title text-[#0078d7] cursor-pointer"
|
||||
style="word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;"
|
||||
class="news-item-title text-[#0078d7] overflow-hidden whitespace-nowrap text-ellipsis cursor-pointer"
|
||||
@click="handleNewClick(item)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, idx)"
|
||||
class="news-item-content"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
{{item.summary}}
|
||||
<div class="news-item-content">
|
||||
{{
|
||||
item.content.length > 230
|
||||
? item.content.substring(0, 230) + "..."
|
||||
: item.content
|
||||
}}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{item.summary}}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</n-infinite-scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import customDefaultPage from "@/components/customDefaultPage/index.vue";
|
||||
import { reactive, onMounted, watch, nextTick, ref } from "vue";
|
||||
import { NSelect, NInput, NButton, NInfiniteScroll, NTooltip } from "naive-ui";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import axios from 'axios'
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
@ -112,85 +90,11 @@ const state = reactive({
|
||||
},
|
||||
],
|
||||
filterNewsData: [],
|
||||
loading: false, //是否正在加载数据
|
||||
hasMore: true, //是否还有更多数据
|
||||
currentPage: 1, //当前页码
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.filterNewsData.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// state.filterNewsData = state.newsData;
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.filterNewsData, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
pageSize: 10,
|
||||
timeStart: state.selectedValue
|
||||
? state.selectedValue === 'all_years'
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
if (state.currentPage === 1) {
|
||||
state.filterNewsData = res.data.data?.data || []
|
||||
} else {
|
||||
state.filterNewsData = [
|
||||
...state.filterNewsData,
|
||||
...(res.data.data?.data || []),
|
||||
]
|
||||
}
|
||||
if (state.filterNewsData.length < (res.data.data?.total || 0)) {
|
||||
state.hasMore = true
|
||||
} else {
|
||||
state.hasMore = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
state.filterNewsData = state.newsData;
|
||||
});
|
||||
|
||||
const handleFilter = () => {
|
||||
// 筛选逻辑
|
||||
@ -226,17 +130,14 @@ const handleFilter = () => {
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
() => {
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
}
|
||||
handleFilter();
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const handleSearch = () => {
|
||||
// 手动触发筛选(保留这个函数以保持兼容性)
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
handleFilter();
|
||||
// console.log("筛选结果:", state.filterNewsData);
|
||||
};
|
||||
|
||||
@ -244,23 +145,10 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
date: item.date,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
//加载更多数据
|
||||
const doLoadMore = () => {
|
||||
if (!state.hasMore || state.loading) {
|
||||
return
|
||||
}
|
||||
// console.log('触底了')
|
||||
state.loading = true
|
||||
state.currentPage++
|
||||
getPressReleasesDisplay().finally(() => {
|
||||
state.loading = false
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,9 +1,8 @@
|
||||
<template>
|
||||
<div class="press-releases-page">
|
||||
<n-infinite-scroll :distance="0" @load="doLoadMore">
|
||||
<main class="p-[35px] max-w-[1200px] mx-auto">
|
||||
<div class="title mb-[20px]">
|
||||
{{ t('press_releases.title') }}
|
||||
{{ t("press_releases.title") }}
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<n-select
|
||||
@ -22,57 +21,36 @@
|
||||
@click="handleSearch"
|
||||
class="search-button w-[60px]"
|
||||
>
|
||||
{{ t('press_releases.search.button') }}
|
||||
{{ t("press_releases.search.button") }}
|
||||
</n-button>
|
||||
</div>
|
||||
<div v-for="(item, idx) in state.filterNewsData" :key="idx">
|
||||
<div class="news-item mt-[10px]">
|
||||
<div class="news-item-date">{{ item.date }}</div>
|
||||
<div
|
||||
class="news-item-title text-[#0078d7] cursor-pointer"
|
||||
style="word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;"
|
||||
class="news-item-title text-[#0078d7] overflow-hidden whitespace-nowrap text-ellipsis cursor-pointer"
|
||||
@click="handleNewClick(item)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<n-tooltip
|
||||
trigger="hover"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, idx)"
|
||||
class="news-item-content"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
{{item.summary}}
|
||||
<div class="news-item-content">
|
||||
{{
|
||||
item.content.length > 230
|
||||
? item.content.substring(0, 230) + "..."
|
||||
: item.content
|
||||
}}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{item.summary}}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</n-infinite-scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import customDefaultPage from "@/components/customDefaultPage/index.vue";
|
||||
import { reactive, onMounted, watch, nextTick, ref } from "vue";
|
||||
import { NSelect, NInput, NButton, NInfiniteScroll, NTooltip } from "naive-ui";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import axios from 'axios'
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
@ -112,85 +90,11 @@ const state = reactive({
|
||||
},
|
||||
],
|
||||
filterNewsData: [],
|
||||
loading: false, //是否正在加载数据
|
||||
hasMore: true, //是否还有更多数据
|
||||
currentPage: 1, //当前页码
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.filterNewsData.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// state.filterNewsData = state.newsData;
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.filterNewsData, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
pageSize: 10,
|
||||
timeStart: state.selectedValue
|
||||
? state.selectedValue === 'all_years'
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
if (state.currentPage === 1) {
|
||||
state.filterNewsData = res.data.data?.data || []
|
||||
} else {
|
||||
state.filterNewsData = [
|
||||
...state.filterNewsData,
|
||||
...(res.data.data?.data || []),
|
||||
]
|
||||
}
|
||||
if (state.filterNewsData.length < (res.data.data?.total || 0)) {
|
||||
state.hasMore = true
|
||||
} else {
|
||||
state.hasMore = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
state.filterNewsData = state.newsData;
|
||||
});
|
||||
|
||||
const handleFilter = () => {
|
||||
// 筛选逻辑
|
||||
@ -226,17 +130,14 @@ const handleFilter = () => {
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
() => {
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
}
|
||||
handleFilter();
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const handleSearch = () => {
|
||||
// 手动触发筛选(保留这个函数以保持兼容性)
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
handleFilter();
|
||||
// console.log("筛选结果:", state.filterNewsData);
|
||||
};
|
||||
|
||||
@ -244,23 +145,10 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
date: item.date,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
//加载更多数据
|
||||
const doLoadMore = () => {
|
||||
if (!state.hasMore || state.loading) {
|
||||
return
|
||||
}
|
||||
// console.log('触底了')
|
||||
state.loading = true
|
||||
state.currentPage++
|
||||
getPressReleasesDisplay().finally(() => {
|
||||
state.loading = false
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,12 +1,8 @@
|
||||
<template>
|
||||
<div class="press-releases-page">
|
||||
<n-infinite-scroll :distance="0" @load="doLoadMore">
|
||||
<main
|
||||
class="p-[80px] mx-auto"
|
||||
style="max-width: 100vw; min-width: 285px;"
|
||||
>
|
||||
<main class="p-[80px] mx-auto" style="max-width: 100vw; min-width: 285px">
|
||||
<div class="title mb-[24px]">
|
||||
{{ t('press_releases.title') }}
|
||||
{{ t("press_releases.title") }}
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<n-select
|
||||
@ -29,59 +25,38 @@
|
||||
class="search-button"
|
||||
:font-size="72"
|
||||
>
|
||||
{{ t('press_releases.search.button') }}
|
||||
{{ t("press_releases.search.button") }}
|
||||
</n-button>
|
||||
</div>
|
||||
<div v-for="(item, idx) in state.filterNewsData" :key="idx">
|
||||
<div class="news-item mt-[10px]">
|
||||
<div class="news-item-date">{{ item.date }}</div>
|
||||
<div
|
||||
class="news-item-title text-[#0078d7] cursor-pointer"
|
||||
style="word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;"
|
||||
class="news-item-title text-[#0078d7] overflow-hidden whitespace-nowrap text-ellipsis cursor-pointer"
|
||||
@click="handleNewClick(item)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<n-tooltip
|
||||
trigger="click"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, idx)"
|
||||
class="news-item-content"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
{{item.summary}}
|
||||
<div class="news-item-content">
|
||||
{{
|
||||
item.content.length > 230
|
||||
? item.content.substring(0, 230) + "..."
|
||||
: item.content
|
||||
}}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{item.summary}}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</n-infinite-scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import customDefaultPage from "@/components/customDefaultPage/index.vue";
|
||||
import { reactive, onMounted, watch, nextTick, ref } from "vue";
|
||||
import { NSelect, NInput, NButton, NInfiniteScroll, NTooltip } from "naive-ui";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import axios from 'axios'
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
|
||||
@ -119,85 +94,11 @@ const state = reactive({
|
||||
},
|
||||
],
|
||||
filterNewsData: [],
|
||||
loading: false, //是否正在加载数据
|
||||
hasMore: true, //是否还有更多数据
|
||||
currentPage: 1, //当前页码
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.filterNewsData.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// state.filterNewsData = state.newsData;
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.filterNewsData, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
pageSize: 10,
|
||||
timeStart: state.selectedValue
|
||||
? state.selectedValue === 'all_years'
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
if (state.currentPage === 1) {
|
||||
state.filterNewsData = res.data.data?.data || []
|
||||
} else {
|
||||
state.filterNewsData = [
|
||||
...state.filterNewsData,
|
||||
...(res.data.data?.data || []),
|
||||
]
|
||||
}
|
||||
if (state.filterNewsData.length < (res.data.data?.total || 0)) {
|
||||
state.hasMore = true
|
||||
} else {
|
||||
state.hasMore = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
state.filterNewsData = state.newsData;
|
||||
});
|
||||
|
||||
const handleFilter = () => {
|
||||
// 筛选逻辑
|
||||
@ -233,17 +134,14 @@ const handleFilter = () => {
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
() => {
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
}
|
||||
handleFilter();
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const handleSearch = () => {
|
||||
// 手动触发筛选(保留这个函数以保持兼容性)
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
handleFilter();
|
||||
// console.log("筛选结果:", state.filterNewsData);
|
||||
};
|
||||
|
||||
@ -251,23 +149,10 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
date: item.date,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
//加载更多数据
|
||||
const doLoadMore = () => {
|
||||
if (!state.hasMore || state.loading) {
|
||||
return
|
||||
}
|
||||
// console.log('触底了')
|
||||
state.loading = true
|
||||
state.currentPage++
|
||||
getPressReleasesDisplay().finally(() => {
|
||||
state.loading = false
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -1,9 +1,8 @@
|
||||
<template>
|
||||
<div class="press-releases-page">
|
||||
<n-infinite-scroll :distance="0" @load="doLoadMore">
|
||||
<main class="p-[35px] mx-auto" style="max-width: calc(100% - 100px);">
|
||||
<main class="p-[35px] mx-auto" style="max-width: calc(100% - 100px)">
|
||||
<div class="title mb-[20px]">
|
||||
{{ t('press_releases.title') }}
|
||||
{{ t("press_releases.title") }}
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<n-select
|
||||
@ -22,57 +21,36 @@
|
||||
@click="handleSearch"
|
||||
class="search-button w-[120px]"
|
||||
>
|
||||
{{ t('press_releases.search.button') }}
|
||||
{{ t("press_releases.search.button") }}
|
||||
</n-button>
|
||||
</div>
|
||||
<div v-for="(item, idx) in state.filterNewsData" :key="idx">
|
||||
<div class="news-item mt-[10px]">
|
||||
<div class="news-item-date">{{ item.date }}</div>
|
||||
<div
|
||||
class="news-item-title text-[#0078d7] cursor-pointer"
|
||||
style="word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;"
|
||||
class="news-item-title text-[#0078d7] overflow-hidden whitespace-nowrap text-ellipsis cursor-pointer"
|
||||
@click="handleNewClick(item)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<n-tooltip
|
||||
trigger="click"
|
||||
:disabled="!item.showTooltip"
|
||||
width="trigger"
|
||||
>
|
||||
<template #trigger>
|
||||
<div
|
||||
:ref="(el) => setTitleRef(el, idx)"
|
||||
class="news-item-content"
|
||||
style="
|
||||
word-break: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
"
|
||||
>
|
||||
{{item.summary}}
|
||||
<div class="news-item-content">
|
||||
{{
|
||||
item.content.length > 230
|
||||
? item.content.substring(0, 230) + "..."
|
||||
: item.content
|
||||
}}
|
||||
</div>
|
||||
</template>
|
||||
<div slot="content">
|
||||
{{item.summary}}
|
||||
</div>
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</n-infinite-scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import customDefaultPage from "@/components/customDefaultPage/index.vue";
|
||||
import { reactive, onMounted, watch, nextTick, ref } from "vue";
|
||||
import { NSelect, NInput, NButton, NInfiniteScroll, NTooltip } from "naive-ui";
|
||||
import { reactive, onMounted, watch } from "vue";
|
||||
import { NSelect, NInput, NButton } from "naive-ui";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import axios from 'axios'
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
@ -112,85 +90,11 @@ const state = reactive({
|
||||
},
|
||||
],
|
||||
filterNewsData: [],
|
||||
loading: false, //是否正在加载数据
|
||||
hasMore: true, //是否还有更多数据
|
||||
currentPage: 1, //当前页码
|
||||
});
|
||||
|
||||
const titleRefs = ref([])
|
||||
|
||||
const setTitleRef = (el, idx) => {
|
||||
if (el) titleRefs.value[idx] = el
|
||||
}
|
||||
|
||||
const checkAllTitleOverflow = () => {
|
||||
state.filterNewsData.forEach((item, idx) => {
|
||||
const el = titleRefs.value[idx]
|
||||
if (!el) {
|
||||
item.showTooltip = false
|
||||
return
|
||||
}
|
||||
item.showTooltip = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// state.filterNewsData = state.newsData;
|
||||
getPressReleasesDisplay()
|
||||
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
})
|
||||
|
||||
watch(() => state.filterNewsData, () => {
|
||||
nextTick(() => {
|
||||
checkAllTitleOverflow()
|
||||
})
|
||||
}, { deep: true })
|
||||
|
||||
// 获取新闻列表
|
||||
const getPressReleasesDisplay = () => {
|
||||
let url = 'https://erpapi.fiee.com/api/fiee/pressreleases/display'
|
||||
let params = {
|
||||
query: state.inputValue,
|
||||
page: state.currentPage,
|
||||
pageSize: 10,
|
||||
timeStart: state.selectedValue
|
||||
? state.selectedValue === 'all_years'
|
||||
? null
|
||||
: new Date(state.selectedValue).getTime()
|
||||
: null,
|
||||
}
|
||||
// console.log(params)
|
||||
axios.post(url, params).then((res) => {
|
||||
// console.log(res)
|
||||
if (res.status === 200) {
|
||||
if (res.data.status === 0) {
|
||||
res.data.data?.data?.forEach((item) => {
|
||||
item.date = new Date(item.createdAt).toLocaleDateString('en-US', {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
})
|
||||
})
|
||||
if (state.currentPage === 1) {
|
||||
state.filterNewsData = res.data.data?.data || []
|
||||
} else {
|
||||
state.filterNewsData = [
|
||||
...state.filterNewsData,
|
||||
...(res.data.data?.data || []),
|
||||
]
|
||||
}
|
||||
if (state.filterNewsData.length < (res.data.data?.total || 0)) {
|
||||
state.hasMore = true
|
||||
} else {
|
||||
state.hasMore = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
state.filterNewsData = state.newsData;
|
||||
});
|
||||
|
||||
const handleFilter = () => {
|
||||
// 筛选逻辑
|
||||
@ -226,17 +130,14 @@ const handleFilter = () => {
|
||||
watch(
|
||||
() => [state.selectedValue, state.inputValue],
|
||||
() => {
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
}
|
||||
handleFilter();
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const handleSearch = () => {
|
||||
// 手动触发筛选(保留这个函数以保持兼容性)
|
||||
// handleFilter();
|
||||
state.currentPage = 1
|
||||
getPressReleasesDisplay()
|
||||
handleFilter();
|
||||
// console.log("筛选结果:", state.filterNewsData);
|
||||
};
|
||||
|
||||
@ -244,28 +145,15 @@ const handleNewClick = (item) => {
|
||||
router.push({
|
||||
path: "/news",
|
||||
query: {
|
||||
id: item.id,
|
||||
date: item.date,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
//加载更多数据
|
||||
const doLoadMore = () => {
|
||||
if (!state.hasMore || state.loading) {
|
||||
return
|
||||
}
|
||||
// console.log('触底了')
|
||||
state.loading = true
|
||||
state.currentPage++
|
||||
getPressReleasesDisplay().finally(() => {
|
||||
state.loading = false
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.title {
|
||||
font-size: 63px;
|
||||
font-size: 40px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user