From 1c06b377d08896622cefdfebd0e3fcf597aba0c1 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Fri, 15 Aug 2025 14:20:49 +0800 Subject: [PATCH] =?UTF-8?q?Feature:=E4=BA=A7=E5=93=81=E6=80=BB=E8=A7=88?= =?UTF-8?q?=E9=A1=B5=20&=20Strapi=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/JinshenFooter.vue | 275 ++++++++++++++++++++++++++++++ app/components/ProductionCard.vue | 29 ++++ app/layouts/default.vue | 3 + app/pages/index.vue | 77 ++++++++- app/pages/productions/index.vue | 62 +++++++ bun.lock | 5 + i18n.config.ts | 6 + i18n/locales/en.json | 26 ++- i18n/locales/zh.json | 22 ++- nuxt.config.ts | 26 ++- package.json | 1 + 11 files changed, 518 insertions(+), 14 deletions(-) create mode 100644 app/components/JinshenFooter.vue create mode 100644 app/components/ProductionCard.vue create mode 100644 app/pages/productions/index.vue create mode 100644 i18n.config.ts diff --git a/app/components/JinshenFooter.vue b/app/components/JinshenFooter.vue new file mode 100644 index 0000000..ec23c7a --- /dev/null +++ b/app/components/JinshenFooter.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/app/components/ProductionCard.vue b/app/components/ProductionCard.vue new file mode 100644 index 0000000..fcf247e --- /dev/null +++ b/app/components/ProductionCard.vue @@ -0,0 +1,29 @@ + + + + + \ No newline at end of file diff --git a/app/layouts/default.vue b/app/layouts/default.vue index 4dc3181..c97a897 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -6,5 +6,8 @@ + + + \ No newline at end of file diff --git a/app/pages/index.vue b/app/pages/index.vue index fc0f635..1ec4404 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,5 +1,76 @@ \ No newline at end of file + +
+
+

{{ $t('productions') }}

+

{{ $t('productions-desc') }}

+
+ +
+

{{ $t('solutions') }}

+

{{ $t('solutions-desc') }}

+
+ +
+

{{ $t('support') }}

+

{{ $t('support-desc') }}

+
+
+ + + + \ No newline at end of file diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue new file mode 100644 index 0000000..74cca43 --- /dev/null +++ b/app/pages/productions/index.vue @@ -0,0 +1,62 @@ + + + + + + + \ No newline at end of file diff --git a/bun.lock b/bun.lock index 90e20f4..0ac2248 100644 --- a/bun.lock +++ b/bun.lock @@ -11,6 +11,7 @@ "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", "@nuxtjs/i18n": "10.0.5", + "@nuxtjs/strapi": "2.1.1", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0", @@ -319,6 +320,8 @@ "@nuxtjs/i18n": ["@nuxtjs/i18n@10.0.5", "", { "dependencies": { "@intlify/core": "^11.1.11", "@intlify/h3": "^0.7.1", "@intlify/shared": "^11.1.11", "@intlify/unplugin-vue-i18n": "^6.0.8", "@intlify/utils": "^0.13.0", "@miyaneee/rollup-plugin-json5": "^1.2.0", "@nuxt/kit": "^4.0.3", "@rollup/plugin-yaml": "^4.1.2", "@vue/compiler-sfc": "^3.5.18", "cookie-es": "^2.0.0", "defu": "^6.1.4", "devalue": "^5.1.1", "h3": "^1.15.3", "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "nuxt-define": "^1.0.0", "oxc-parser": "^0.81.0", "oxc-transform": "^0.81.0", "oxc-walker": "^0.4.0", "pathe": "^2.0.3", "typescript": "^5.9.2", "ufo": "^1.6.1", "unplugin": "^2.3.5", "unplugin-vue-router": "^0.14.0", "unstorage": "^1.16.1", "vue-i18n": "^11.1.11", "vue-router": "^4.5.1" } }, "sha512-rLQc/nEVWL0xMJf1a6+ndUpdQtxPBFzm4jeqG4o7HuXtDLn4HOe1dPdu7AsaIqq7EcsEjZ5T4mX4X8XnB8cT0Q=="], + "@nuxtjs/strapi": ["@nuxtjs/strapi@2.1.1", "", { "dependencies": { "@nuxt/kit": "^3.17.5", "defu": "^6.1.4", "graphql": "^16.11.0", "qs": "^6.14.0", "ufo": "^1.6.1" } }, "sha512-CNcsEqkhto4P5SEA4ZuRrGdfOT7swsZp/hvR7SNG3OW3J8eHJythE68P1LaszCq5uvYlg7j90Iue534sEdedtQ=="], + "@oxc-minify/binding-android-arm64": ["@oxc-minify/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-OLelUqrLkSJwNyjLZHgpKy9n0+zHQiMX8A0GFovJIwhgfPxjT/mt2JMnGkSoDlTnf9cw6nvALFzCsJZLTyl8gg=="], "@oxc-minify/binding-darwin-arm64": ["@oxc-minify/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7vJjhKHGfFVit3PCerbnrXQI0XgmmgV5HTNxlNsvxcmjPRIoYVkuwwRkiBsxO4RiBwvRRkAFPop3fY/gpuflJA=="], @@ -1277,6 +1280,8 @@ "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + "graphql": ["graphql@16.11.0", "", {}, "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw=="], + "gzip-size": ["gzip-size@7.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA=="], "h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="], diff --git a/i18n.config.ts b/i18n.config.ts new file mode 100644 index 0000000..2486bd1 --- /dev/null +++ b/i18n.config.ts @@ -0,0 +1,6 @@ +// @ts-expect-error - defineI18nConfig is provided by @nuxtjs/i18n +export default defineI18nConfig(() => ({ + legacy: false, + locale: 'zh', + fallbackLocale: 'zh' +})) diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 8616473..b4b9992 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -1,9 +1,29 @@ { - "back": "back", - "not-found": "Not found", + "back": "Back", + "not-found": "Page Not Found", "productions": "Productions", "solutions": "Solutions", "support": "Support", "about-us": "About Us", - "search-placeholder": "Search..." + "search-placeholder": "Search...", + "company-name": "Jinshen Machinary Manufacturing Co., Ltd.", + "company-description": "We specialize in manufacturing a range of paper tube and can equipment, integrating design, manufacturing, sales, and service.", + "learn-more": "Learn More", + "productions-desc": "We provide high-quality product solutions to meet various business needs.", + "solutions-desc": "Providing customized technology solutions for enterprises to accelerate digital transformation.", + "support-desc": "24/7 professional technical support to ensure stable operation of your business.", + "quick-links": "Quick Links", + "navigation": { + "home": "Home" + }, + "contact-info": "Contact Us", + "telephone": "Telephone", + "email": "Email", + "address": "Address", + "company-address": "No. 689 Qiushi Road, Wutong Industrial Zone, Tongxiang City, Zhejiang Province, China", + "follow-us": "Follow Us", + "all-rights-reserved": "All rights reserved", + "privacy-policy": "Privacy Policy", + "terms-of-service": "Terms of Service", + "sitemap": "Sitemap" } diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json index c19e0f7..08dd0ce 100644 --- a/i18n/locales/zh.json +++ b/i18n/locales/zh.json @@ -5,5 +5,25 @@ "solutions": "解决方案", "support": "服务支持", "about-us": "关于我们", - "search-placeholder": "搜索..." + "search-placeholder": "搜索...", + "company-name": "金申机械制造有限公司", + "company-description": "专业生产一系列纸管、纸罐设备,集设计、制造、销售、服务于一体。", + "learn-more": "了解更多", + "productions-desc": "我们提供高质量的产品解决方案,满足各种业务需求。", + "solutions-desc": "为企业提供定制化的技术解决方案,助力数字化转型。", + "support-desc": "7x24小时专业技术支持,确保您的业务稳定运行。", + "quick-links": "快速链接", + "navigation": { + "home": "首页" + }, + "contact-info": "联系我们", + "telephone": "电话", + "email": "邮箱", + "address": "地址", + "company-address": "浙江省桐乡市梧桐工业区秋实路689号", + "follow-us": "关注我们", + "all-rights-reserved": "版权所有", + "privacy-policy": "隐私政策", + "terms-of-service": "服务条款", + "sitemap": "网站地图" } diff --git a/nuxt.config.ts b/nuxt.config.ts index 4cc0cf7..2fc0e3d 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -57,17 +57,28 @@ export default defineNuxtConfig({ i18n: { detectBrowserLanguage: { useCookie: true, - cookieKey: 'i18n_redirected', - redirectOn: 'root' + cookieKey: "i18n_redirected", + redirectOn: "root", }, locales: [ - { code: 'en', language: 'en-US', name: 'English', file: 'en.json' }, - { code: 'zh', language: 'zh-CN', name: '简体中文', file: 'zh.json' }, + { code: "en", language: "en-US", name: "English", file: "en.json" }, + { code: "zh", language: "zh-CN", name: "简体中文", file: "zh.json" }, ], - defaultLocale: 'zh', - langDir: 'locales' + defaultLocale: "zh", + langDir: "locales", }, + strapi: { + url: process.env.STRAPI_URL || "http://localhost:1337", + token: process.env.STRAPI_TOKEN || undefined, + prefix: "/api", + admin: "/admin", + version: "v5", + cookie: {}, + cookieName: "strapi_jwt", + }, + + modules: [ "@nuxt/eslint", "@nuxt/fonts", @@ -79,5 +90,6 @@ export default defineNuxtConfig({ "@unocss/nuxt", "@element-plus/nuxt", "@nuxtjs/i18n", + "@nuxtjs/strapi", ], -}); \ No newline at end of file +}); diff --git a/package.json b/package.json index 9f3fd51..17a91cd 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", "@nuxtjs/i18n": "10.0.5", + "@nuxtjs/strapi": "2.1.1", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0",