Compare commits

..

No commits in common. "main" and "yk-20250926" have entirely different histories.

17 changed files with 372 additions and 297 deletions

2
.gitignore vendored
View File

@ -11,8 +11,6 @@ node_modules
dist dist
dist-ssr dist-ssr
*.local *.local
.output
*.nuxt
# Editor directories and files # Editor directories and files
.vscode/* .vscode/*

View File

@ -1,24 +0,0 @@
FROM image-in.fontree.cn/node:22.17.1-slim AS base
ENV PORT=80 \
TZ=Asia/Shanghai
RUN corepack enable
RUN npm config set registry https://registry.npmmirror.com/
COPY . /app
WORKDIR /app
FROM base AS build
RUN --mount=type=cache,id=npm,target=/npm/store npm i
RUN npm run build:prod
FROM base
#COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app/.output /app/.output
#COPY --from=build /app/dist /app/dist
EXPOSE 80
#CMD [ "tail", "-f", "/dev/null" ]
# 最终阶段的 CMD
CMD [ "sh", "-c", "node .output/server/index.mjs" ]

View File

@ -48,7 +48,7 @@ pnpm run build-prod
## 正式 ## 正式
<https://www.fiee.com> <https://www.fiee.com/myhome>
Jenkins front-fiee-website Jenkins front-fiee-website
## 测试 ## 测试

View File

@ -2,47 +2,9 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta <title>FiEE</title>
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<title>FiEE - Leading the Full Cycle of Art</title>
<meta
name="description"
content="FiEE leverages AI and Big Data to empower art creators and global brands, delivering a comprehensive suite of services for the art industry."
/>
<!-- Microsoft / Bing specific meta tags -->
<meta name="msapplication-TileColor" content="#ff7bac" />
<meta name="msapplication-TileImage" content="/logo.png" />
<meta name="thumbnail" content="http://www.fiee.com/logo.png" />
<!-- SEO and Social Media Meta Tags -->
<meta property="og:title" content="FiEE - Leading the Full Cycle of Art" />
<meta
property="og:description"
content="Leveraging AI and Big Data to empower art creators and global brands."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="http://www.fiee.com/" />
<meta property="og:image" content="http://www.fiee.com/logo.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="http://www.fiee.com/logo.png" />
<!-- Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"url": "http://www.fiee.com/",
"logo": "http://www.fiee.com/logo.png",
"name": "FiEE",
"sameAs": [],
"description": "FiEE leverages AI and Big Data to empower art creators and global brands."
}
</script>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View File

@ -1330,8 +1330,8 @@ packages:
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
'@jridgewell/source-map@0.3.11': '@jridgewell/source-map@0.3.6':
resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
'@jridgewell/sourcemap-codec@1.5.0': '@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
@ -1426,46 +1426,55 @@ packages:
resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.20.0': '@rollup/rollup-linux-arm-musleabihf@4.20.0':
resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.20.0': '@rollup/rollup-linux-arm64-gnu@4.20.0':
resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.20.0': '@rollup/rollup-linux-arm64-musl@4.20.0':
resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.20.0': '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.20.0': '@rollup/rollup-linux-riscv64-gnu@4.20.0':
resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.20.0': '@rollup/rollup-linux-s390x-gnu@4.20.0':
resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.20.0': '@rollup/rollup-linux-x64-gnu@4.20.0':
resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.20.0': '@rollup/rollup-linux-x64-musl@4.20.0':
resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.20.0': '@rollup/rollup-win32-arm64-msvc@4.20.0':
resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
@ -1802,11 +1811,6 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
acorn@8.15.0:
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
agent-base@7.1.1: agent-base@7.1.1:
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
@ -1898,8 +1902,8 @@ packages:
base64-js@1.5.1: base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.9.19: baseline-browser-mapping@2.8.17:
resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} resolution: {integrity: sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA==}
hasBin: true hasBin: true
bin-build@3.0.0: bin-build@3.0.0:
@ -2005,8 +2009,11 @@ packages:
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
caniuse-lite@1.0.30001766: caniuse-lite@1.0.30001649:
resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==}
caniuse-lite@1.0.30001751:
resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==}
caw@2.0.1: caw@2.0.1:
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
@ -2969,8 +2976,8 @@ packages:
resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==}
engines: {node: '>= 4'} engines: {node: '>= 4'}
jiti@1.21.7: jiti@1.21.6:
resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true hasBin: true
jiti@2.0.0-beta.2: jiti@2.0.0-beta.2:
@ -5799,10 +5806,10 @@ snapshots:
'@jridgewell/set-array@1.2.1': {} '@jridgewell/set-array@1.2.1': {}
'@jridgewell/source-map@0.3.11': '@jridgewell/source-map@0.3.6':
dependencies: dependencies:
'@jridgewell/gen-mapping': 0.3.13 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.31 '@jridgewell/trace-mapping': 0.3.25
'@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/sourcemap-codec@1.5.0': {}
@ -6425,8 +6432,6 @@ snapshots:
acorn@8.12.1: {} acorn@8.12.1: {}
acorn@8.15.0: {}
agent-base@7.1.1: agent-base@7.1.1:
dependencies: dependencies:
debug: 4.3.6 debug: 4.3.6
@ -6467,7 +6472,7 @@ snapshots:
autoprefixer@10.4.20(postcss@8.4.40): autoprefixer@10.4.20(postcss@8.4.40):
dependencies: dependencies:
browserslist: 4.23.3 browserslist: 4.23.3
caniuse-lite: 1.0.30001766 caniuse-lite: 1.0.30001649
fraction.js: 4.3.7 fraction.js: 4.3.7
normalize-range: 0.1.2 normalize-range: 0.1.2
picocolors: 1.0.1 picocolors: 1.0.1
@ -6536,7 +6541,7 @@ snapshots:
base64-js@1.5.1: {} base64-js@1.5.1: {}
baseline-browser-mapping@2.9.19: {} baseline-browser-mapping@2.8.17: {}
bin-build@3.0.0: bin-build@3.0.0:
dependencies: dependencies:
@ -6602,15 +6607,15 @@ snapshots:
browserslist@4.23.3: browserslist@4.23.3:
dependencies: dependencies:
caniuse-lite: 1.0.30001766 caniuse-lite: 1.0.30001649
electron-to-chromium: 1.5.4 electron-to-chromium: 1.5.4
node-releases: 2.0.18 node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3) update-browserslist-db: 1.1.0(browserslist@4.23.3)
browserslist@4.26.3: browserslist@4.26.3:
dependencies: dependencies:
baseline-browser-mapping: 2.9.19 baseline-browser-mapping: 2.8.17
caniuse-lite: 1.0.30001766 caniuse-lite: 1.0.30001751
electron-to-chromium: 1.5.237 electron-to-chromium: 1.5.237
node-releases: 2.0.25 node-releases: 2.0.25
update-browserslist-db: 1.1.3(browserslist@4.26.3) update-browserslist-db: 1.1.3(browserslist@4.26.3)
@ -6661,7 +6666,9 @@ snapshots:
camelcase@2.1.1: {} camelcase@2.1.1: {}
caniuse-lite@1.0.30001766: {} caniuse-lite@1.0.30001649: {}
caniuse-lite@1.0.30001751: {}
caw@2.0.1: caw@2.0.1:
dependencies: dependencies:
@ -7573,7 +7580,7 @@ snapshots:
debug: 4.3.6 debug: 4.3.6
esbuild: 0.21.5 esbuild: 0.21.5
jiti: 2.0.0-beta.2 jiti: 2.0.0-beta.2
jiti-v1: jiti@1.21.7 jiti-v1: jiti@1.21.6
pathe: 1.1.2 pathe: 1.1.2
pkg-types: 1.1.3 pkg-types: 1.1.3
tsx: 4.16.5 tsx: 4.16.5
@ -7677,7 +7684,7 @@ snapshots:
has-to-string-tag-x: 1.4.1 has-to-string-tag-x: 1.4.1
is-object: 1.0.2 is-object: 1.0.2
jiti@1.21.7: {} jiti@1.21.6: {}
jiti@2.0.0-beta.2: {} jiti@2.0.0-beta.2: {}
@ -8738,8 +8745,8 @@ snapshots:
terser@5.31.3: terser@5.31.3:
dependencies: dependencies:
'@jridgewell/source-map': 0.3.11 '@jridgewell/source-map': 0.3.6
acorn: 8.15.0 acorn: 8.12.1
commander: 2.20.3 commander: 2.20.3
source-map-support: 0.5.21 source-map-support: 0.5.21

View File

@ -1,4 +0,0 @@
<?xml version="1.0"?>
<users>
<user>3E89AA9116FE7EC0C3572DE4A5363F21</user>
</users>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -1,3 +0,0 @@
User-agent: *
Allow: /
Sitemap: http://www.fiee.com/sitemap.xml

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.fiee.com/</loc>
<priority>1.0</priority>
</url>
<url>
<loc>http://www.fiee.com/companyoverview</loc>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.fiee.com/news</loc>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.fiee.com/press-releases</loc>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.fiee.com/stock-quote</loc>
<priority>0.7</priority>
</url>
</urlset>

View File

@ -163,7 +163,7 @@ onUnmounted(() => {
// //
const handleToHome = () => { const handleToHome = () => {
router.push("/"); router.push("/myhome");
selectedKey.value = null; // selectedKey.value = null; //
}; };
</script> </script>

View File

@ -90,7 +90,7 @@ const isScrolled = ref(false);
const showLanguagePicker = ref(false); const showLanguagePicker = ref(false);
const selectedLanguage = ref( const selectedLanguage = ref(
localStorage.getItem("language") || locale.value || "en", localStorage.getItem("language") || locale.value || "en"
); );
const languageOptions = computed(() => [ const languageOptions = computed(() => [
@ -102,7 +102,7 @@ const languageOptions = computed(() => [
const currentLanguageLabel = computed(() => { const currentLanguageLabel = computed(() => {
const found = languageOptions.value.find( const found = languageOptions.value.find(
(opt) => opt.value === (locale.value || "en"), (opt) => opt.value === (locale.value || "en")
); );
return found ? found.label : "English"; return found ? found.label : "English";
}); });
@ -160,7 +160,7 @@ onUnmounted(() => {
// //
const handleToHome = () => { const handleToHome = () => {
router.push("/"); router.push("/myhome");
selectedKey.value = null; // selectedKey.value = null; //
}; };
</script> </script>

View File

@ -17,12 +17,16 @@ const calculateWidth = computed(() => {
} }
}); });
const routes = [ const routes = [
{
path: "/",
redirect: '/myhome'
},
{ {
path: "/", path: "/",
name: "index", name: "index",
component: () => import("@/views/index/index.vue"), component: () => import("@/views/index/index.vue"),
// beforeEnter: (to, from, next) => { // beforeEnter: (to, from, next) => {
//
// localStorage.clear() // localStorage.clear()
// next() // next()
// } // }
@ -111,7 +115,7 @@ const routes = [
component: () => import("@/views/companyoverview/index.vue"), component: () => import("@/views/companyoverview/index.vue"),
}, },
{ {
path: "", path: "myhome",
name: "myHome", name: "myHome",
component: () => import("@/views/myHome/index.vue"), component: () => import("@/views/myHome/index.vue"),
}, },
@ -201,7 +205,7 @@ const routes = [
// }, // },
{ {
path: '/:pathMatch(.*)*', path: '/:pathMatch(.*)*',
redirect: '/' redirect: '/myhome'
} }
]; ];

View File

@ -1,3 +1,4 @@
<template> <template>
<div class="home-page relative overflow-hidden z-10 bg-[#ffffff]"> <div class="home-page relative overflow-hidden z-10 bg-[#ffffff]">
<div <div
@ -242,13 +243,9 @@
pages.length % 2 !== 0 && index === pages.length - 1, pages.length % 2 !== 0 && index === pages.length - 1,
}" }"
> >
<div class="text-[24px] font-600"> <div class="text-[24px] font-600">{{ locale === 'zh' || locale === 'zh-TW'
{{ ? dayjs(item.date).format('YYYY年M月D日')
locale === "zh" || locale === "zh-TW" : dayjs(item.date).format('MMMM D, YYYY') }}</div>
? dayjs(item.date).format("YYYY年M月D日")
: dayjs(item.date).format("MMMM D, YYYY")
}}
</div>
<n-tooltip <n-tooltip
trigger="hover" trigger="hover"
:disabled="!item.showTooltip" :disabled="!item.showTooltip"
@ -289,6 +286,70 @@
</template> </template>
</div> </div>
</div> </div>
<!-- <div class="news-card">
<div style="margin-bottom: 20px" v-for="(item, index) in newList">
<div
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<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;
"
>
{{ 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"
class="cursor-pointer"
@click="handleLink(item)"
>
View Press Release<img
class="ml-[10px]"
src="@/assets/image/icon/icon-new.png"
alt=""
style="width: 20px; height: 20px"
/>
</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> </section>
<!-- 新增股票信息与活动预告双栏模块 --> <!-- 新增股票信息与活动预告双栏模块 -->
<section <section
@ -472,10 +533,10 @@ import dayjs from "dayjs";
const { getStockQuate, stockQuote, formatted } = useStockQuote(); const { getStockQuate, stockQuote, formatted } = useStockQuote();
const date = computed(() => { const date = computed(() => {
return ["zh", "zh-TW"].includes(locale.value) return ['zh', 'zh-TW'].includes(locale.value)
? dayjs(formatted.value).format("YYYY年MM月DD日") + " 16:00" ? dayjs(formatted.value).format('YYYY年MM月DD日') + ' 16:00'
: formatted.value; : formatted.value
}); })
// - 26 // - 26
const itemsPerPage = 6; const itemsPerPage = 6;
@ -493,7 +554,7 @@ const pages = computed(() => {
// 使slice6 // 使slice6
const limitedItems = newList.value.slice( const limitedItems = newList.value.slice(
currentPage.value * itemsPerPage, currentPage.value * itemsPerPage,
(currentPage.value + 1) * itemsPerPage, (currentPage.value + 1) * itemsPerPage
); );
return limitedItems; return limitedItems;
}); });
@ -583,7 +644,7 @@ onMounted(() => {
root: null, root: null,
threshold: 0.1, // 10% threshold: 0.1, // 10%
rootMargin: "0px 0px -50px 0px", // 50px rootMargin: "0px 0px -50px 0px", // 50px
}, }
); );
observer.observe(contentRef.value); observer.observe(contentRef.value);
@ -628,7 +689,7 @@ watch(
checkAllTitleOverflow(); checkAllTitleOverflow();
}); });
}, },
{ deep: true }, { deep: true }
); );
onUnmounted(() => { onUnmounted(() => {
@ -742,9 +803,7 @@ const handleLink = (item) => {
font-weight: bold; font-weight: bold;
opacity: 0; opacity: 0;
transform: translateX(-200px); transform: translateX(-200px);
transition: transition: opacity 0.6s ease-out, transform 0.6s ease-out;
opacity 0.6s ease-out,
transform 0.6s ease-out;
} }
.content-blocks.slide-in { .content-blocks.slide-in {
@ -803,9 +862,7 @@ const handleLink = (item) => {
border-radius: 12px; border-radius: 12px;
padding: 30px; padding: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transition: transform 0.3s ease, box-shadow 0.3s ease;
transform 0.3s ease,
box-shadow 0.3s ease;
} }
.info-card:hover { .info-card:hover {

View File

@ -242,13 +242,9 @@
pages.length % 2 !== 0 && index === pages.length - 1, pages.length % 2 !== 0 && index === pages.length - 1,
}" }"
> >
<div class="text-[24px] font-600"> <div class="text-[24px] font-600">{{ locale === 'zh' || locale === 'zh-TW'
{{ ? dayjs(item.date).format('YYYY年M月D日')
locale === "zh" || locale === "zh-TW" : dayjs(item.date).format('MMMM D, YYYY') }}</div>
? dayjs(item.date).format("YYYY年M月D日")
: dayjs(item.date).format("MMMM D, YYYY")
}}
</div>
<n-tooltip <n-tooltip
trigger="hover" trigger="hover"
:disabled="!item.showTooltip" :disabled="!item.showTooltip"
@ -289,6 +285,70 @@
</template> </template>
</div> </div>
</div> </div>
<!-- <div class="news-card">
<div style="margin-bottom: 20px" v-for="(item, index) in newList">
<div
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<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;
"
>
{{ 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"
class="cursor-pointer"
@click="handleLink(item)"
>
View Press Release<img
class="ml-[10px]"
src="@/assets/image/icon/icon-new.png"
alt=""
style="width: 20px; height: 20px"
/>
</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> </section>
<!-- 新增股票信息与活动预告双栏模块 --> <!-- 新增股票信息与活动预告双栏模块 -->
<section <section
@ -472,10 +532,10 @@ import dayjs from "dayjs";
const { getStockQuate, stockQuote, formatted } = useStockQuote(); const { getStockQuate, stockQuote, formatted } = useStockQuote();
const date = computed(() => { const date = computed(() => {
return ["zh", "zh-TW"].includes(locale.value) return ['zh', 'zh-TW'].includes(locale.value)
? dayjs(formatted.value).format("YYYY年MM月DD日") + " 16:00" ? dayjs(formatted.value).format('YYYY年MM月DD日') + ' 16:00'
: formatted.value; : formatted.value
}); })
// - 26 // - 26
const itemsPerPage = 6; const itemsPerPage = 6;
@ -493,7 +553,7 @@ const pages = computed(() => {
// 使slice6 // 使slice6
const limitedItems = newList.value.slice( const limitedItems = newList.value.slice(
currentPage.value * itemsPerPage, currentPage.value * itemsPerPage,
(currentPage.value + 1) * itemsPerPage, (currentPage.value + 1) * itemsPerPage
); );
return limitedItems; return limitedItems;
}); });
@ -583,7 +643,7 @@ onMounted(() => {
root: null, root: null,
threshold: 0.1, // 10% threshold: 0.1, // 10%
rootMargin: "0px 0px -50px 0px", // 50px rootMargin: "0px 0px -50px 0px", // 50px
}, }
); );
observer.observe(contentRef.value); observer.observe(contentRef.value);
@ -628,7 +688,7 @@ watch(
checkAllTitleOverflow(); checkAllTitleOverflow();
}); });
}, },
{ deep: true }, { deep: true }
); );
onUnmounted(() => { onUnmounted(() => {
@ -742,9 +802,7 @@ const handleLink = (item) => {
font-weight: bold; font-weight: bold;
opacity: 0; opacity: 0;
transform: translateX(-200px); transform: translateX(-200px);
transition: transition: opacity 0.6s ease-out, transform 0.6s ease-out;
opacity 0.6s ease-out,
transform 0.6s ease-out;
} }
.content-blocks.slide-in { .content-blocks.slide-in {
@ -803,9 +861,7 @@ const handleLink = (item) => {
border-radius: 12px; border-radius: 12px;
padding: 30px; padding: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transition: transform 0.3s ease, box-shadow 0.3s ease;
transform 0.3s ease,
box-shadow 0.3s ease;
} }
.info-card:hover { .info-card:hover {

View File

@ -185,13 +185,9 @@
style="height: 182px" style="height: 182px"
class="news-card flex flex-col justify-between" class="news-card flex flex-col justify-between"
> >
<div class="text-[24PX] font-600"> <div class="text-[24PX] font-600">{{ locale === 'zh' || locale === 'zh-TW'
{{ ? dayjs(item.date).format('YYYY年M月D日')
locale === "zh" || locale === "zh-TW" : dayjs(item.date).format('MMMM D, YYYY') }}</div>
? dayjs(item.date).format("YYYY年M月D日")
: dayjs(item.date).format("MMMM D, YYYY")
}}
</div>
<n-tooltip <n-tooltip
trigger="hover" trigger="hover"
:disabled="!item.showTooltip" :disabled="!item.showTooltip"
@ -326,10 +322,10 @@ import { NCarousel, NDivider, NMarquee, NPopselect } from "naive-ui";
import { ArrowBack, ArrowForward } from "@vicons/ionicons5"; import { ArrowBack, ArrowForward } from "@vicons/ionicons5";
const date = computed(() => { const date = computed(() => {
return ["zh", "zh-TW"].includes(locale.value) return ['zh', 'zh-TW'].includes(locale.value)
? dayjs(formatted.value).format("YYYY年MM月DD日") + " 16:00" ? dayjs(formatted.value).format('YYYY年MM月DD日') + ' 16:00'
: formatted.value; : formatted.value
}); })
// - 26 // - 26
const itemsPerPage = 6; const itemsPerPage = 6;
@ -347,7 +343,7 @@ const pages = computed(() => {
// 使slice6 // 使slice6
const limitedItems = newList.value.slice( const limitedItems = newList.value.slice(
currentPage.value * itemsPerPage, currentPage.value * itemsPerPage,
(currentPage.value + 1) * itemsPerPage, (currentPage.value + 1) * itemsPerPage
); );
return limitedItems; return limitedItems;
}); });
@ -437,7 +433,7 @@ onMounted(() => {
root: null, root: null,
threshold: 0.1, // 10% threshold: 0.1, // 10%
rootMargin: "0px 0px -50px 0px", // 50px rootMargin: "0px 0px -50px 0px", // 50px
}, }
); );
observer.observe(contentRef.value); observer.observe(contentRef.value);
@ -482,7 +478,7 @@ watch(
checkAllTitleOverflow(); checkAllTitleOverflow();
}); });
}, },
{ deep: true }, { deep: true }
); );
onUnmounted(() => { onUnmounted(() => {
@ -557,9 +553,7 @@ const handleLink = (item) => {
margin: 0 12px; margin: 0 12px;
border-radius: 50%; border-radius: 50%;
background-color: #efefef; background-color: #efefef;
transition: transition: width 0.3s, background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
width 0.3s,
background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer; cursor: pointer;
} }
@ -661,9 +655,7 @@ const handleLink = (item) => {
font-weight: bold; font-weight: bold;
opacity: 0; opacity: 0;
transform: translateX(-200px); transform: translateX(-200px);
transition: transition: opacity 0.6s ease-out, transform 0.6s ease-out;
opacity 0.6s ease-out,
transform 0.6s ease-out;
} }
.content-blocks.slide-in { .content-blocks.slide-in {
@ -722,9 +714,7 @@ const handleLink = (item) => {
border-radius: 12px; border-radius: 12px;
padding: 30px; padding: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transition: transform 0.3s ease, box-shadow 0.3s ease;
transform 0.3s ease,
box-shadow 0.3s ease;
} }
.info-card:hover { .info-card:hover {

View File

@ -219,13 +219,9 @@
pages.length % 2 !== 0 && index === pages.length - 1, pages.length % 2 !== 0 && index === pages.length - 1,
}" }"
> >
<div class="text-[24PX] font-600"> <div class="text-[24PX] font-600">{{ locale === 'zh' || locale === 'zh-TW'
{{ ? dayjs(item.date).format('YYYY年M月D日')
locale === "zh" || locale === "zh-TW" : dayjs(item.date).format('MMMM D, YYYY') }}</div>
? dayjs(item.date).format("YYYY年M月D日")
: dayjs(item.date).format("MMMM D, YYYY")
}}
</div>
<n-tooltip <n-tooltip
trigger="hover" trigger="hover"
:disabled="!item.showTooltip" :disabled="!item.showTooltip"
@ -266,6 +262,70 @@
</template> </template>
</div> </div>
</div> </div>
<!-- <div class="news-card">
<div style="margin-bottom: 20px" v-for="(item, index) in newList">
<div
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<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;
"
>
{{ 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"
class="cursor-pointer"
@click="handleLink(item)"
>
View Press Release<img
class="ml-[10px]"
src="@/assets/image/icon/icon-new.png"
alt=""
style="width: 20px; height: 20px"
/>
</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> </section>
<!-- 新增股票信息与活动预告双栏模块 --> <!-- 新增股票信息与活动预告双栏模块 -->
<section <section
@ -432,10 +492,10 @@ import dayjs from "dayjs";
const { getStockQuate, stockQuote, formatted } = useStockQuote(); const { getStockQuate, stockQuote, formatted } = useStockQuote();
const date = computed(() => { const date = computed(() => {
return ["zh", "zh-TW"].includes(locale.value) return ['zh', 'zh-TW'].includes(locale.value)
? dayjs(formatted.value).format("YYYY年MM月DD日") + " 16:00" ? dayjs(formatted.value).format('YYYY年MM月DD日') + ' 16:00'
: formatted.value; : formatted.value
}); })
// - 26 // - 26
const itemsPerPage = 6; const itemsPerPage = 6;
@ -453,7 +513,7 @@ const pages = computed(() => {
// 使slice6 // 使slice6
const limitedItems = newList.value.slice( const limitedItems = newList.value.slice(
currentPage.value * itemsPerPage, currentPage.value * itemsPerPage,
(currentPage.value + 1) * itemsPerPage, (currentPage.value + 1) * itemsPerPage
); );
return limitedItems; return limitedItems;
}); });
@ -542,7 +602,7 @@ onMounted(() => {
root: null, root: null,
threshold: 0.1, // 10% threshold: 0.1, // 10%
rootMargin: "0px 0px -50px 0px", // 50px rootMargin: "0px 0px -50px 0px", // 50px
}, }
); );
observer.observe(contentRef.value); observer.observe(contentRef.value);
@ -587,7 +647,7 @@ watch(
checkAllTitleOverflow(); checkAllTitleOverflow();
}); });
}, },
{ deep: true }, { deep: true }
); );
onUnmounted(() => { onUnmounted(() => {
@ -701,9 +761,7 @@ const handleLink = (item) => {
font-weight: bold; font-weight: bold;
opacity: 0; opacity: 0;
transform: translateX(-200px); transform: translateX(-200px);
transition: transition: opacity 0.6s ease-out, transform 0.6s ease-out;
opacity 0.6s ease-out,
transform 0.6s ease-out;
} }
.content-blocks.slide-in { .content-blocks.slide-in {
@ -762,9 +820,7 @@ const handleLink = (item) => {
border-radius: 12px; border-radius: 12px;
padding: 30px; padding: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transition: transform 0.3s ease, box-shadow 0.3s ease;
transform 0.3s ease,
box-shadow 0.3s ease;
} }
.info-card:hover { .info-card:hover {

View File

@ -1,37 +1,37 @@
import { defineConfig } from "vite"; import {defineConfig} from 'vite'
import vue from "@vitejs/plugin-vue"; import vue from '@vitejs/plugin-vue'
import vueJsx from "@vitejs/plugin-vue-jsx"; import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve } from "path"; import {resolve} from "path"
import AutoImport from "unplugin-auto-import/vite"; import AutoImport from 'unplugin-auto-import/vite';
import Components from "unplugin-vue-components/vite"; import Components from 'unplugin-vue-components/vite';
import { VantResolver } from "@vant/auto-import-resolver"; import {VantResolver} from '@vant/auto-import-resolver';
import UnoCSS from "unocss/vite"; import UnoCSS from 'unocss/vite'
import viteImagemin from "vite-plugin-imagemin"; import viteImagemin from 'vite-plugin-imagemin'
import vueDevTools from "vite-plugin-vue-devtools"; import vueDevTools from 'vite-plugin-vue-devtools';
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
envDir: "./env", // 自定义env目录 envDir: './env', // 自定义env目录
server: { server: {
host: "0.0.0.0", // 监听所有网络接口 host: '0.0.0.0', // 监听所有网络接口
port: 5878, port: 5878,
// 选项写法 // 选项写法
proxy: { proxy: {
"/pag": { '/pag': {
target: "https://cdn.tmui.design", target: 'https://cdn.tmui.design',
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, "/api"), rewrite: (path) => path.replace(/^\/api/, '/api')
}, },
"/pdf-proxy": { '/pdf-proxy': {
target: "https://cdn-test.szjixun.cn", target: 'https://cdn-test.szjixun.cn',
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/pdf-proxy/, ""), rewrite: (path) => path.replace(/^\/pdf-proxy/, '')
},
}, },
}
}, },
plugins: [ plugins: [
vue(), vue(),
vueDevTools({ vueDevTools({
launchEditor: "cursor", launchEditor: 'cursor',
}), }),
UnoCSS(), UnoCSS(),
AutoImport({ AutoImport({
@ -39,48 +39,47 @@ export default defineConfig({
}), }),
Components({ Components({
resolvers: [VantResolver()], resolvers: [VantResolver()],
directoryAsNamespace: true,
}), }),
vueJsx(), vueJsx(),
viteImagemin({ viteImagemin({
// 无损压缩配置 // 无损压缩配置
optipng: { optipng: {
optimizationLevel: 7, optimizationLevel: 7
}, },
// 有损压缩配置 // 有损压缩配置
pngquant: { pngquant: {
quality: [0.8, 0.9], quality: [0.8, 0.9],
speed: 4, speed: 4
}, },
// svg 优化 // svg 优化
svgo: { svgo: {
plugins: [ plugins: [
{ {
name: "removeViewBox", name: 'removeViewBox'
}, },
{ {
name: "removeEmptyAttrs", name: 'removeEmptyAttrs',
active: false, active: false
}, }
], ]
}, },
// jpg 优化 // jpg 优化
mozjpeg: { mozjpeg: {
quality: 80, quality: 80
}, },
// webp 优化 // webp 优化
webp: { webp: {
quality: 80, quality: 80
}, }
}), })
], ],
resolve: { resolve: {
alias: [ alias: [
{ {
find: "@", find: "@",
replacement: resolve(__dirname, "src"), replacement: resolve(__dirname, 'src')
}
]
}, },
], })
},
});