Commit f4c36364bca05ff76998faeca44c8a86d0129983

Authored by sanmu
1 parent 8a735f44

feat: 新增google&国际化

.vscode/settings.json 0 → 100644
  1 +{
  2 + "i18n-ally.localesPaths": [
  3 + ""
  4 + ]
  5 +}
0 \ No newline at end of file 6 \ No newline at end of file
README.md
@@ -17,9 +17,9 @@ docker run -d -p 8088:3000 --name canrud-outside-front canrud-outside-front:dev @@ -17,9 +17,9 @@ docker run -d -p 8088:3000 --name canrud-outside-front canrud-outside-front:dev
17 1. 修改 deploy/prod.sh的 TAG 将版本号+1,默认改动小版本,如1.0.0->1.0.1 17 1. 修改 deploy/prod.sh的 TAG 将版本号+1,默认改动小版本,如1.0.0->1.0.1
18 1. 在根目录执行 sh deploy/prod.sh 18 1. 在根目录执行 sh deploy/prod.sh
19 1. 登录112服务器,,将镜像拷贝到生产的47服务器 19 1. 登录112服务器,,将镜像拷贝到生产的47服务器
20 -scp /root/web/canrud-outside-nuxt-front/canrud-outside-front_1.0.0.tar root@47.89.254.121:/root/web/canrud-outside-nuxt-front 20 +scp /root/web/canrud-outside-nuxt-front/canrud-outside-front_1.0.2.tar root@47.89.254.121:/root/web/canrud-outside-nuxt-front
21 1. 登录47服务器,进入到 /root/web/canrud-outside-nuxt-front 目录 21 1. 登录47服务器,进入到 /root/web/canrud-outside-nuxt-front 目录
22 -1. 加载镜像 docker load -i canrud-outside-front_1.0.0.tar (1.0.0对应你的tag) 22 +1. 加载镜像 docker load -i canrud-outside-front_1.0.2.tar (1.0.0对应你的tag)
23 1. 修改 docker-compose.yaml 的镜像版本号 23 1. 修改 docker-compose.yaml 的镜像版本号
24 1. 启动服务 docker-compose up -d 24 1. 启动服务 docker-compose up -d
25 25
@@ -4,6 +4,26 @@ import MobileHeader from '~/components/MobileHeader.vue' @@ -4,6 +4,26 @@ import MobileHeader from '~/components/MobileHeader.vue'
4 4
5 import { useCategoryStore } from '~/stores/category' 5 import { useCategoryStore } from '~/stores/category'
6 6
  7 +// import { useI18n } from 'vue-i18n'
  8 +// const { t } = useI18n()
  9 +
  10 +
  11 +useHead({
  12 + script: [
  13 + { src: 'https://www.googletagmanager.com/gtag/js?id=AW-881504701', async: true },
  14 + {
  15 + children: `
  16 + window.dataLayer = window.dataLayer || [];
  17 + function gtag(){dataLayer.push(arguments);}
  18 + gtag('js', new Date());
  19 + gtag('config', 'AW-881504701');
  20 + `,
  21 + type: 'text/javascript'
  22 + }
  23 + ]
  24 +})
  25 +
  26 +
7 const categoryStore = useCategoryStore() 27 const categoryStore = useCategoryStore()
8 categoryStore.getList() 28 categoryStore.getList()
9 </script> 29 </script>
locales/en.json 0 → 100644
  1 +{
  2 + "Material Reagents": "Material Reagents",
  3 + "Leading global provider of energy storage research materials and providing other professional/universal experimental materials.": "Leading global provider of energy storage research materials and providing other professional/universal experimental materials.",
  4 + "Lab Device": "Lab Device",
  5 + "Self-built High-precision Machining Center with Powerful Design and Manufacturing Capabilities.": "Self-built High-precision Machining Center with Powerful Design and Manufacturing Capabilities.",
  6 + "Customized Battery": "Customized Battery ",
  7 + "200mAh~10Ah, Winding/Stacking, Unfilled/Filled Electrolyte Cells, Three-Electrode, and More.": "200mAh~10Ah, Winding/Stacking, Unfilled/Filled Electrolyte Cells, Three-Electrode, and More.",
  8 + "Testing": "Testing",
  9 + "Self built testing center and signed strategic cooperation with ATL, Tsinghua and other units.": "Self built testing center and signed strategic cooperation with ATL, Tsinghua and other units.",
  10 + "Pack": "Pack",
  11 + "Focusing on energy materials/new energy storage systems/modules and other fields, mastering advanced technologies to provide high-quality services.": "Focusing on energy materials/new energy storage systems/modules and other fields, mastering advanced technologies to provide high-quality services.",
  12 + "detail": "detail",
  13 + "Online Product": "Online Product",
  14 + "Lab Device Products": "Lab Device Products",
  15 + "About": "About",
  16 + "About us": "About us",
  17 + "Contact us": "Contact us",
  18 + "Email": "Email",
  19 + "Phone": "Phone",
  20 + "Wechat": "Wechat",
  21 + "Energy materials": "Energy materials",
  22 + "Not specified": "Not specified",
  23 + "Battery accessories": "Battery accessories",
  24 + "Lithium-ion batteries": "Lithium-ion batteries",
  25 + "Capacitors": "Capacitors",
  26 + "Sodium-ion batteries": "Sodium-ion batteries",
  27 + "Lithium-sulfur batteries": "Lithium-sulfur batteries",
  28 + "Potassium/magnesium/aluminum/zinc batteries": "Potassium/magnesium/aluminum/zinc batteries",
  29 + "Air/fuel/solar": "Air/fuel/solar",
  30 + "Analytical electrodes": "Analytical electrodes",
  31 + "Complete battery accessories": "Complete battery accessories",
  32 + "Laboratory consumables": "Laboratory consumables",
  33 + "Glass materials": "Glass materials",
  34 + "Plastic materials": "Plastic materials",
  35 + "Metal materials": "Metal materials",
  36 + "Ceramic materials": "Ceramic materials",
  37 + "Paper film materials": "Paper film materials",
  38 + "Chemical materials": "Chemical materials",
  39 + "Tetrafluoro materials": "Tetrafluoro materials",
  40 + "Safety protection": "Safety protection",
  41 + "Office supplies": "Office supplies",
  42 + "Tools": "Tools",
  43 + "Low-dimensional materials": "Low-dimensional materials",
  44 + "Zero-dimensional carbon materials": "Zero-dimensional carbon materials",
  45 + "One-dimensional carbon materials": "One-dimensional carbon materials",
  46 + "Two-dimensional carbon materials": "Two-dimensional carbon materials",
  47 + "Three-dimensional carbon materials": "Three-dimensional carbon materials",
  48 + "Inorganic nanomaterials": "Inorganic nanomaterials",
  49 + "Organic nanomaterials": "Organic nanomaterials",
  50 + "Metal nanomaterials": "Metal nanomaterials",
  51 + "Cathode": "Cathode",
  52 + "Anode": "Anode",
  53 + "Separator": "Separator",
  54 + "Electrolyte": "Electrolyte",
  55 + "Conductive agent": "Conductive agent",
  56 + "Adhesive": "Adhesive",
  57 + "Current collector": "Current collector",
  58 + "Analytical electrode": "Analytical electrode",
  59 + "Others": "Others",
  60 + "Metal disk": "Metal disk",
  61 + "Battery electrode sheet": "Battery electrode sheet",
  62 + "Equipment": "Equipment",
  63 + "Accessories & fixtures": "Accessories & fixtures",
  64 + "Fuel cell manufacturing and testing equipment": "Fuel cell manufacturing and testing equipment",
  65 + "Home": "Home",
  66 + "Product": "Product",
  67 + "Search keyword": "Search keyword",
  68 + "Company Profile": "Company Profile",
  69 + "canrud": "canrud",
  70 + "1. 2015.2.11 was established in Songshan Lake High-tech Zone;": "1. 2015.2.11 was established in Songshan Lake High-tech Zone;",
  71 + "2. Registered capital of 1000W;": "2. Registered capital of 1000W;",
  72 + "3. Main business of new energy technology development": "3. Main business of new energy technology development",
  73 + "4. (Customized/ equipment / testing / materials / new product development, etc.);": "4. (Customized/ equipment / testing / materials / new product development, etc.);",
  74 + "5. In 2017, it was approved as a national high-tech enterprise;": "5. In 2017, it was approved as a national high-tech enterprise;",
  75 + "6. 120+ invention patents; 100 + authorized;": "6. 120+ invention patents; 100 + authorized;",
  76 + "7. The plant area is 6,000 m 2, with 70 employees (the core team is from Ningde ATL/ Foxconn).": "7. The plant area is 6,000 m 2, with 70 employees (the core team is from Ningde ATL/ Foxconn).",
  77 + "Corporate Culture": "Corporate Culture",
  78 + "canrudVision": "canrudVision",
  79 + "the world's top one-stop serviceprovider in the field of new energy research": "the world's top one-stop serviceprovider in the field of new energy research",
  80 + "canrudMission": "canrudMission",
  81 + "Build a \"industry-university-research\" high-speed channel": "Build a \"industry-university-research\" high-speed channel",
  82 + "canrudValues": "canrudValues",
  83 + "Burn yourself and contribute to the society Scientific": "Burn yourself and contribute to the society Scientific",
  84 + "Milestone": "Milestone",
  85 + "Canrd": "Canrd",
  86 + "established": "established",
  87 + "National high-tech": "National high-tech",
  88 + "enterprise": "enterprise",
  89 + "Customers": "Customers",
  90 + "exceed 2000+": "exceed 2000+",
  91 + "Customized division": "Customized division",
  92 + "Testing division(Xia Men)": "Testing division(Xia Men)",
  93 + "Equipment division": "Equipment division",
  94 + "R&D center(Houjie)": "R&D center(Houjie)",
  95 + "Pack division": "Pack division",
  96 + "R&D Ability": "R&D Ability",
  97 + "The combination of hardware and software creates strong research and development capabilities.": "The combination of hardware and software creates strong research and development capabilities.",
  98 + "The invention patents cover new materials such as silicon carbon, graphene, lithium sulfur, sodium electricity and lithium metal, as well as gel process, pre-lithium process and flexible battery design.": "The invention patents cover new materials such as silicon carbon, graphene, lithium sulfur, sodium electricity and lithium metal, as well as gel process, pre-lithium process and flexible battery design.",
  99 + "Team": "Team",
  100 + "Core team members are all from ATL/Foxconn 12+working experience": "Core team members are all from ATL/Foxconn 12+working experience",
  101 + "Patents": "Patents",
  102 + "More than 120 invention patents, covering materials, design, process, equipment and so on": "More than 120 invention patents, covering materials, design, process, equipment and so on",
  103 + "Hardware": "Hardware",
  104 + "Independent battery pilot line and equipment production line": "Independent battery pilot line and equipment production line",
  105 + "Solution": "Solution",
  106 + "Customized BatterTesting": "Customized BatterTesting",
  107 + "Equipment Business: With our self-built high-precision machining center, we possess robust design and manufacturing capabilities. We offer comprehensive equipment supply, production line planning, and construction services, including battery assembly lines, pouch cell testing lines, and more. Our aim is to provide complete equipment solutions that cater to the diverse needs of our clients. Expect top-quality equipment and professional services that will help you stand out in a fiercely competitive market!": "Equipment Business: With our self-built high-precision machining center, we possess robust design and manufacturing capabilities. We offer comprehensive equipment supply, production line planning, and construction services, including battery assembly lines, pouch cell testing lines, and more. Our aim is to provide complete equipment solutions that cater to the diverse needs of our clients. Expect top-quality equipment and professional services that will help you stand out in a fiercely competitive market!",
  108 + "Equipment hardware": "Equipment hardware",
  109 + "Precision grinder": "Precision grinder",
  110 + "Numerical control machine": "Numerical control machine",
  111 + "Arm brace": "Arm brace",
  112 + "CNC high-speed precision carving machine": "CNC high-speed precision carving machine",
  113 + "Equipment assembly workshop": "Equipment assembly workshop",
  114 + "Equipment to be shipped": "Equipment to be shipped",
  115 + "Succeed Case": "Succeed Case",
  116 + "Coin cell": "Coin cell",
  117 + "Our coin cell production line comprises a well-established process that includes material baking, vacuum mixing, slurry filtration, electrode coating, electrode drying, electrode rolling, punching, environmental control, cell assembly, cell sealing, and formation testing. Through precise operations and advanced technology, we ensure uniform coating of positive and negative electrode materials, precise dimensions, and optimal performance. Our production line strictly adheres to quality standards, guaranteeing reliable manufacturing of pouch cells. From material preparation to final testing, our professional production line ensures outstanding performance and reliable safety, meeting the diverse needs of our customers.": "Our coin cell production line comprises a well-established process that includes material baking, vacuum mixing, slurry filtration, electrode coating, electrode drying, electrode rolling, punching, environmental control, cell assembly, cell sealing, and formation testing. Through precise operations and advanced technology, we ensure uniform coating of positive and negative electrode materials, precise dimensions, and optimal performance. Our production line strictly adheres to quality standards, guaranteeing reliable manufacturing of pouch cells. From material preparation to final testing, our professional production line ensures outstanding performance and reliable safety, meeting the diverse needs of our customers.",
  118 + "Pouch cell pilot line": "Pouch cell pilot line",
  119 + "Our pouch cell pilot line is a highly specialized production line that encompasses key processes such as vacuum mixing, electrode coating, electrode rolling, electrode cutting, electrode stacking, electrode welding, film forming, top-side sealing, electrolyte filling, vacuum resting, vacuum sealing, hot pressing formation, vacuum final sealing, and pouch cell assembly. Through meticulous operations and advanced technology, we ensure the consistency and reliability of the positive and negative electrodes. Each step is carefully controlled to guarantee the stability, reliability, and high performance of the cells. Our pouch cell pilot line meets industry standards and caters to the professional needs of our customers. Whether for research samples or small-scale production, we provide high-quality and highly reliable pouch cell products.": "Our pouch cell pilot line is a highly specialized production line that encompasses key processes such as vacuum mixing, electrode coating, electrode rolling, electrode cutting, electrode stacking, electrode welding, film forming, top-side sealing, electrolyte filling, vacuum resting, vacuum sealing, hot pressing formation, vacuum final sealing, and pouch cell assembly. Through meticulous operations and advanced technology, we ensure the consistency and reliability of the positive and negative electrodes. Each step is carefully controlled to guarantee the stability, reliability, and high performance of the cells. Our pouch cell pilot line meets industry standards and caters to the professional needs of our customers. Whether for research samples or small-scale production, we provide high-quality and highly reliable pouch cell products.",
  120 + "Pouch cell pilot line (200m2)": "Pouch cell pilot line (200m2)",
  121 + "Our pouch cell pilot line layout has been meticulously designed, as shown in the accompanying diagram, to optimize space utilization, streamline workflow, and control temperature and humidity. This layout ensures high production efficiency, convenient operation, and precise experimental control. The equipment placement is strategically arranged, allowing easy access for operators while prioritizing safety considerations.": "Our pouch cell pilot line layout has been meticulously designed, as shown in the accompanying diagram, to optimize space utilization, streamline workflow, and control temperature and humidity. This layout ensures high production efficiency, convenient operation, and precise experimental control. The equipment placement is strategically arranged, allowing easy access for operators while prioritizing safety considerations.",
  122 + "Customized fixture": "Customized fixture",
  123 + "Fuel cell test fixture": "Fuel cell test fixture",
  124 + "Flow battery test fixture": "Flow battery test fixture",
  125 + "Leading hardware support for customized battery solutions. Independent prototyping line covers the entire process. Equipped with a soft-pack development line and a -50°C drying room to meet various needs. Two lithium metal pouch cell preparation options provided. Strong R&D capabilities with over 10 years of experience. Resolving 100+ customized projects, serving 50+ clients. Services include material evaluation, R&D contract manufacturing, new system development, and finished/semi-finished products. Breakthroughs in high-temperature, low-temperature, and fast-charging fields. Production and sales of high-quality lithium-ion batteries. Choose us to meet your R&D and production needs.": "Leading hardware support for customized battery solutions. Independent prototyping line covers the entire process. Equipped with a soft-pack development line and a -50°C drying room to meet various needs. Two lithium metal pouch cell preparation options provided. Strong R&D capabilities with over 10 years of experience. Resolving 100+ customized projects, serving 50+ clients. Services include material evaluation, R&D contract manufacturing, new system development, and finished/semi-finished products. Breakthroughs in high-temperature, low-temperature, and fast-charging fields. Production and sales of high-quality lithium-ion batteries. Choose us to meet your R&D and production needs.",
  126 + "Customization Hardware": "Customization Hardware",
  127 + "Coin cell preparation line with different machine such as mixing, coating, calendaring, cutting, assembly and testing.": "Coin cell preparation line with different machine such as mixing, coating, calendaring, cutting, assembly and testing.",
  128 + "1、Pouch cell pilot line with different humidity control requirement": "1、Pouch cell pilot line with different humidity control requirement",
  129 + "2、Dry room for other process": "2、Dry room for other process",
  130 + "3、Dry room for mixing and coating with -30℃ humidity": "3、Dry room for mixing and coating with -30℃ humidity",
  131 + "4、(before electrolyte injection)with -40℃ humidity": "4、(before electrolyte injection)with -40℃ humidity",
  132 + "1、There are different capacity for mixing(5L,10L and 30L)": "1、There are different capacity for mixing(5L,10L and 30L)",
  133 + "2、Dry room for high Ni cathode pouch cell preparation(-30℃ humidity)": "2、Dry room for high Ni cathode pouch cell preparation(-30℃ humidity)",
  134 + "3、Different solution to prepare lithium metal pouch cell(glove box with 0.1ppm condition or -50℃ dry room)": "3、Different solution to prepare lithium metal pouch cell(glove box with 0.1ppm condition or -50℃ dry room)",
  135 + "5L mixing": "5L mixing",
  136 + "30L mixing": "30L mixing",
  137 + "Li metal pouch cell": "Li metal pouch cell",
  138 + "customized types": "customized types",
  139 + "1.Semi-finished product": "1.Semi-finished product",
  140 + "New product customization": "New product customization",
  141 + "Material evaluation": "Material evaluation",
  142 + "Comprehensive lithium battery material evaluation, covering key materials such as cathode, anode, electrolyte, separator, and conductive additives. Accurate testing to ensure high-performance batteries. Choose us to embark on the path of material innovation!.": "Comprehensive lithium battery material evaluation, covering key materials such as cathode, anode, electrolyte, separator, and conductive additives. Accurate testing to ensure high-performance batteries. Choose us to embark on the path of material innovation!.",
  143 + "System development": "System development",
  144 + "High temperature: mine safety helmet Low temperature: outdoor extreme cold applicationFast charging system development: fast charging power bank Water system battery development: new system development.": "High temperature: mine safety helmet Low temperature: outdoor extreme cold applicationFast charging system development: fast charging power bank Water system battery development: new system development.",
  145 + "We have an independent battery testing center that provides comprehensive testing services for you! Whether it's ambient temperature, high-temperature cycling, rate testing, high and low-temperature testing, high-temperature storage testing, or EIS/CV testing, we can meet your needs. Our reverse analysis experimental plan covers various dimensions, including non-destructive testing, disassembly analysis, size, capacity, internal resistance, EIS, rate, high and low-temperature analysis. Through techniques such as capacity testing, SEM, EDS, Mapping, CP, TG, GC-MS, ICP, we conduct in-depth reverse analysis, including elemental analysis and morphology analysis. Finally, we prepare detailed reverse analysis reports, combining market conditions to provide you with research and development directions. Choose us for reliable testing and limitless innovation!": "We have an independent battery testing center that provides comprehensive testing services for you! Whether it's ambient temperature, high-temperature cycling, rate testing, high and low-temperature testing, high-temperature storage testing, or EIS/CV testing, we can meet your needs. Our reverse analysis experimental plan covers various dimensions, including non-destructive testing, disassembly analysis, size, capacity, internal resistance, EIS, rate, high and low-temperature analysis. Through techniques such as capacity testing, SEM, EDS, Mapping, CP, TG, GC-MS, ICP, we conduct in-depth reverse analysis, including elemental analysis and morphology analysis. Finally, we prepare detailed reverse analysis reports, combining market conditions to provide you with research and development directions. Choose us for reliable testing and limitless innovation!",
  146 + "Test Hardware": "Test Hardware",
  147 + "Cycle/Rate test": "Cycle/Rate test",
  148 + "H/L temperature oven": "H/L temperature oven",
  149 + "High temperature oven": "High temperature oven",
  150 + "Electrochemical workstation": "Electrochemical workstation",
  151 + "BET": "BET",
  152 + "TG-DSC": "TG-DSC",
  153 + "Raman": "Raman",
  154 + "XRD": "XRD",
  155 + "Reverse analysis": "Reverse analysis",
  156 + "Reverse analysis: assist customers to analyze the polymer / organic components in mainstream power batteries": "Reverse analysis: assist customers to analyze the polymer / organic components in mainstream power batteries",
  157 + "1. Experiment scheme: first conduct nondestructive testing (size / capacity / internal resistance / EIS / ratio / high and low temperature, etc.), and finally conduct disassembly analysis": "1. Experiment scheme: first conduct nondestructive testing (size / capacity / internal resistance / EIS / ratio / high and low temperature, etc.), and finally conduct disassembly analysis",
  158 + "2. Implement reverse analysis: gram capacity / SEM / ED S/Mapping / CP / TG / GC-MS / ICP and other means": "2. Implement reverse analysis: gram capacity / SEM / ED S/Mapping / CP / TG / GC-MS / ICP and other means",
  159 + "3. Write the reverse analysis report: give the customer research and development direction according to the market situation": "3. Write the reverse analysis report: give the customer research and development direction according to the market situation",
  160 + "We are proud to introduce our PACK product to you. As a leader in the market application of scientific research projects, we focus on transforming scientific achievements into practical market applications. We provide a variety of cases to meet different project requirements, such as fast-charging mobile power supplies, smart flashlights, low-speed vehicles, and small-scale energy storage. We are committed to successfully applying the results of scientific research projects to the market and providing innovative solutions for our customers.": "We are proud to introduce our PACK product to you. As a leader in the market application of scientific research projects, we focus on transforming scientific achievements into practical market applications. We provide a variety of cases to meet different project requirements, such as fast-charging mobile power supplies, smart flashlights, low-speed vehicles, and small-scale energy storage. We are committed to successfully applying the results of scientific research projects to the market and providing innovative solutions for our customers.",
  161 + "Pack Hardware": "Pack Hardware",
  162 + "112000w laser-beam welding machine": "112000w laser-beam welding machine",
  163 + "115000A resistance welding machine": "115000A resistance welding machine",
  164 + "11Numerical control machine": "11Numerical control machine",
  165 + "115V 60A": "115V 60A",
  166 + "115V3A": "115V3A",
  167 + "11100V/120A": "11100V/120A",
  168 + "11Oscilloscope": "11Oscilloscope",
  169 + "Canrd helps our customer to accomplish the requirement from PET current collector to power bank;": "Canrd helps our customer to accomplish the requirement from PET current collector to power bank;",
  170 + "1. Canrd helps our customer to accomplish the requirement from sodium cathode to standard car;": "1. Canrd helps our customer to accomplish the requirement from sodium cathode to standard car;",
  171 + "2. Canrd is pleased to be the bridge between new material to cell and even to terminal application product which can accelerate the R&D development;": "2. Canrd is pleased to be the bridge between new material to cell and even to terminal application product which can accelerate the R&D development;",
  172 + "Contact Us": "Contact Us",
  173 + "Official Web": "Official Web",
  174 + "Contact Information": "Contact Information",
  175 + "Technical Center": "Technical Center",
  176 + "Address": "Address",
  177 + "Copper Foil": "Copper Foil",
  178 + "Brand": "Brand",
  179 + "Product Model": "Product Model",
  180 + "thickness": "thickness",
  181 + "MA-EN-CU-0O": "MA-EN-CU-0O",
  182 + "9um": "9um",
  183 + "MA-EN-CU-000202": "MA-EN-CU-000202",
  184 + "9um x 170mm x 3kg/ roll": "9um x 170mm x 3kg/ roll",
  185 + "MA-EN-CU-000201": "MA-EN-CU-000201",
  186 + "9um x 200mm x 3kg/ roll": "9um x 200mm x 3kg/ roll",
  187 + "Advantage": "Advantage",
  188 + "Product Details": "Product Details",
  189 + "Specification": "Specification"
  190 +}
0 \ No newline at end of file 191 \ No newline at end of file
locales/zh.json 0 → 100644
  1 +{
  2 + "welcome": "欢迎",
  3 + "Customized Battery": "Customized Battery",
  4 +}
0 \ No newline at end of file 5 \ No newline at end of file
nuxt.config.ts
@@ -50,6 +50,15 @@ export default defineNuxtConfig({ @@ -50,6 +50,15 @@ export default defineNuxtConfig({
50 // proxy: process.env.BASE_URL || 'http://39.108.227.113:8002/shop/**' 50 // proxy: process.env.BASE_URL || 'http://39.108.227.113:8002/shop/**'
51 } 51 }
52 } 52 }
53 - } 53 + },
  54 + i18n: {
  55 + locales: [
  56 + { code: 'en', iso: 'en-US', file: 'en.json' },
  57 + { code: 'zh', iso: 'zh-CN', file: 'zh.json' }
  58 + ],
  59 + lazy: true,
  60 + langDir: 'locales/',
  61 + defaultLocale: 'zh',
  62 + },
54 }) 63 })
55 64
package.json
@@ -24,4 +24,4 @@ @@ -24,4 +24,4 @@
24 "sass": "^1.77.1", 24 "sass": "^1.77.1",
25 "tailwindcss": "^3.4.3" 25 "tailwindcss": "^3.4.3"
26 } 26 }
27 -} 27 -}
  28 +}
28 \ No newline at end of file 29 \ No newline at end of file
plugins/google-analytics.js 0 → 100644
  1 +import { defineNuxtPlugin } from '#app'
  2 +import VueGtag from 'vue-gtag'
  3 +
  4 +export default defineNuxtPlugin((nuxtApp) => {
  5 + const getGDPRConsent = true; // 自定义获取用户同意的逻辑
  6 + if (getGDPRConsent) {
  7 + nuxtApp.vueApp.use(VueGtag, {
  8 + config: { id: 'AW-881504701' } // 使用你的 Google Analytics 4 测量ID
  9 + }, nuxtApp.router);
  10 + }
  11 +});
pnpm-lock.yaml
@@ -14,9 +14,15 @@ dependencies: @@ -14,9 +14,15 @@ dependencies:
14 nuxt: 14 nuxt:
15 specifier: ^3.11.2 15 specifier: ^3.11.2
16 version: 3.11.2(@opentelemetry/api@1.8.0)(@unocss/reset@0.60.2)(floating-vue@5.2.2)(rollup@4.17.2)(sass@1.77.1)(unocss@0.60.2)(vite@5.2.11) 16 version: 3.11.2(@opentelemetry/api@1.8.0)(@unocss/reset@0.60.2)(floating-vue@5.2.2)(rollup@4.17.2)(sass@1.77.1)(unocss@0.60.2)(vite@5.2.11)
  17 + nuxt-gtag:
  18 + specifier: ^2.0.7
  19 + version: 2.0.7(rollup@4.17.2)
17 vue: 20 vue:
18 specifier: ^3.4.27 21 specifier: ^3.4.27
19 version: 3.4.27 22 version: 3.4.27
  23 + vue-gtag:
  24 + specifier: ^2.0.1
  25 + version: 2.0.1(vue@3.4.27)
20 vue-router: 26 vue-router:
21 specifier: ^4.3.2 27 specifier: ^4.3.2
22 version: 4.3.2(vue@3.4.27) 28 version: 4.3.2(vue@3.4.27)
@@ -659,7 +665,7 @@ packages: @@ -659,7 +665,7 @@ packages:
659 debug: 4.3.4 665 debug: 4.3.4
660 kolorist: 1.8.0 666 kolorist: 1.8.0
661 local-pkg: 0.5.0 667 local-pkg: 0.5.0
662 - mlly: 1.7.0 668 + mlly: 1.7.1
663 transitivePeerDependencies: 669 transitivePeerDependencies:
664 - supports-color 670 - supports-color
665 dev: false 671 dev: false
@@ -1136,6 +1142,36 @@ packages: @@ -1136,6 +1142,36 @@ packages:
1136 - rollup 1142 - rollup
1137 - supports-color 1143 - supports-color
1138 1144
  1145 + /@nuxt/kit@3.12.3(rollup@4.17.2):
  1146 + resolution: {integrity: sha512-5R8FZLDxBKlkDWYsqwU1tctGJ5vwMA96WBrNkpQ0LznB2/p+3MWWTO6vz+0P0F9xvZZfkk/KKyZ3uUhnG9VJOA==}
  1147 + engines: {node: ^14.18.0 || >=16.10.0}
  1148 + dependencies:
  1149 + '@nuxt/schema': 3.12.3(rollup@4.17.2)
  1150 + c12: 1.11.1
  1151 + consola: 3.2.3
  1152 + defu: 6.1.4
  1153 + destr: 2.0.3
  1154 + globby: 14.0.2
  1155 + hash-sum: 2.0.0
  1156 + ignore: 5.3.1
  1157 + jiti: 1.21.6
  1158 + klona: 2.0.6
  1159 + knitwork: 1.1.0
  1160 + mlly: 1.7.1
  1161 + pathe: 1.1.2
  1162 + pkg-types: 1.1.3
  1163 + scule: 1.3.0
  1164 + semver: 7.6.2
  1165 + ufo: 1.5.3
  1166 + unctx: 2.3.1
  1167 + unimport: 3.7.2(rollup@4.17.2)
  1168 + untyped: 1.4.2
  1169 + transitivePeerDependencies:
  1170 + - magicast
  1171 + - rollup
  1172 + - supports-color
  1173 + dev: false
  1174 +
1139 /@nuxt/schema@3.11.2(rollup@4.17.2): 1175 /@nuxt/schema@3.11.2(rollup@4.17.2):
1140 resolution: {integrity: sha512-Z0bx7N08itD5edtpkstImLctWMNvxTArsKXzS35ZuqyAyKBPcRjO1CU01slH0ahO30Gg9kbck3/RKNZPwfOjJg==} 1176 resolution: {integrity: sha512-Z0bx7N08itD5edtpkstImLctWMNvxTArsKXzS35ZuqyAyKBPcRjO1CU01slH0ahO30Gg9kbck3/RKNZPwfOjJg==}
1141 engines: {node: ^14.18.0 || >=16.10.0} 1177 engines: {node: ^14.18.0 || >=16.10.0}
@@ -1155,6 +1191,27 @@ packages: @@ -1155,6 +1191,27 @@ packages:
1155 - rollup 1191 - rollup
1156 - supports-color 1192 - supports-color
1157 1193
  1194 + /@nuxt/schema@3.12.3(rollup@4.17.2):
  1195 + resolution: {integrity: sha512-Zw/2stN5CWVOHQ6pKyewk3tvYW5ROBloTGyIbie7/TprJT5mL+E9tTgAxOZtkoKSFaYEQXZgE1K2OzMelhLRzw==}
  1196 + engines: {node: ^14.18.0 || >=16.10.0}
  1197 + dependencies:
  1198 + compatx: 0.1.8
  1199 + consola: 3.2.3
  1200 + defu: 6.1.4
  1201 + hookable: 5.5.3
  1202 + pathe: 1.1.2
  1203 + pkg-types: 1.1.3
  1204 + scule: 1.3.0
  1205 + std-env: 3.7.0
  1206 + ufo: 1.5.3
  1207 + uncrypto: 0.1.3
  1208 + unimport: 3.7.2(rollup@4.17.2)
  1209 + untyped: 1.4.2
  1210 + transitivePeerDependencies:
  1211 + - rollup
  1212 + - supports-color
  1213 + dev: false
  1214 +
1158 /@nuxt/telemetry@2.5.4(rollup@4.17.2): 1215 /@nuxt/telemetry@2.5.4(rollup@4.17.2):
1159 resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==} 1216 resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==}
1160 hasBin: true 1217 hasBin: true
@@ -2883,6 +2940,28 @@ packages: @@ -2883,6 +2940,28 @@ packages:
2883 pkg-types: 1.1.1 2940 pkg-types: 1.1.1
2884 rc9: 2.1.2 2941 rc9: 2.1.2
2885 2942
  2943 + /c12@1.11.1:
  2944 + resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==}
  2945 + peerDependencies:
  2946 + magicast: ^0.3.4
  2947 + peerDependenciesMeta:
  2948 + magicast:
  2949 + optional: true
  2950 + dependencies:
  2951 + chokidar: 3.6.0
  2952 + confbox: 0.1.7
  2953 + defu: 6.1.4
  2954 + dotenv: 16.4.5
  2955 + giget: 1.2.3
  2956 + jiti: 1.21.6
  2957 + mlly: 1.7.1
  2958 + ohash: 1.1.3
  2959 + pathe: 1.1.2
  2960 + perfect-debounce: 1.0.0
  2961 + pkg-types: 1.1.3
  2962 + rc9: 2.1.2
  2963 + dev: false
  2964 +
2886 /cac@6.7.14: 2965 /cac@6.7.14:
2887 resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 2966 resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
2888 engines: {node: '>=8'} 2967 engines: {node: '>=8'}
@@ -3062,6 +3141,10 @@ packages: @@ -3062,6 +3141,10 @@ packages:
3062 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 3141 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
3063 dev: false 3142 dev: false
3064 3143
  3144 + /compatx@0.1.8:
  3145 + resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==}
  3146 + dev: false
  3147 +
3065 /compress-commons@6.0.2: 3148 /compress-commons@6.0.2:
3066 resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} 3149 resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
3067 engines: {node: '>= 14'} 3150 engines: {node: '>= 14'}
@@ -3889,6 +3972,18 @@ packages: @@ -3889,6 +3972,18 @@ packages:
3889 slash: 5.1.0 3972 slash: 5.1.0
3890 unicorn-magic: 0.1.0 3973 unicorn-magic: 0.1.0
3891 3974
  3975 + /globby@14.0.2:
  3976 + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
  3977 + engines: {node: '>=18'}
  3978 + dependencies:
  3979 + '@sindresorhus/merge-streams': 2.3.0
  3980 + fast-glob: 3.3.2
  3981 + ignore: 5.3.1
  3982 + path-type: 5.0.0
  3983 + slash: 5.1.0
  3984 + unicorn-magic: 0.1.0
  3985 + dev: false
  3986 +
3892 /graceful-fs@4.2.11: 3987 /graceful-fs@4.2.11:
3893 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 3988 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
3894 dev: false 3989 dev: false
@@ -4275,6 +4370,11 @@ packages: @@ -4275,6 +4370,11 @@ packages:
4275 resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 4370 resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
4276 hasBin: true 4371 hasBin: true
4277 4372
  4373 + /jiti@1.21.6:
  4374 + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
  4375 + hasBin: true
  4376 + dev: false
  4377 +
4278 /js-tokens@4.0.0: 4378 /js-tokens@4.0.0:
4279 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 4379 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
4280 4380
@@ -4658,6 +4758,15 @@ packages: @@ -4658,6 +4758,15 @@ packages:
4658 pkg-types: 1.1.1 4758 pkg-types: 1.1.1
4659 ufo: 1.5.3 4759 ufo: 1.5.3
4660 4760
  4761 + /mlly@1.7.1:
  4762 + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
  4763 + dependencies:
  4764 + acorn: 8.11.3
  4765 + pathe: 1.1.2
  4766 + pkg-types: 1.1.3
  4767 + ufo: 1.5.3
  4768 + dev: false
  4769 +
4661 /mri@1.2.0: 4770 /mri@1.2.0:
4662 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 4771 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
4663 engines: {node: '>=4'} 4772 engines: {node: '>=4'}
@@ -4989,6 +5098,19 @@ packages: @@ -4989,6 +5098,19 @@ packages:
4989 fsevents: 2.3.3 5098 fsevents: 2.3.3
4990 dev: false 5099 dev: false
4991 5100
  5101 + /nuxt-gtag@2.0.7(rollup@4.17.2):
  5102 + resolution: {integrity: sha512-iiKS4agfMTPes94T7CIhawZTkach2CcJppQw40RgJeWqaor84g0VqLcpmH9c5/QcSH3QmGoArOtzXlBUKYXd2g==}
  5103 + dependencies:
  5104 + '@nuxt/kit': 3.12.3(rollup@4.17.2)
  5105 + defu: 6.1.4
  5106 + pathe: 1.1.2
  5107 + ufo: 1.5.3
  5108 + transitivePeerDependencies:
  5109 + - magicast
  5110 + - rollup
  5111 + - supports-color
  5112 + dev: false
  5113 +
4992 /nuxt@3.11.2(@opentelemetry/api@1.8.0)(@unocss/reset@0.60.2)(floating-vue@5.2.2)(rollup@4.17.2)(sass@1.77.1)(unocss@0.60.2)(vite@5.2.11): 5114 /nuxt@3.11.2(@opentelemetry/api@1.8.0)(@unocss/reset@0.60.2)(floating-vue@5.2.2)(rollup@4.17.2)(sass@1.77.1)(unocss@0.60.2)(vite@5.2.11):
4993 resolution: {integrity: sha512-Be1d4oyFo60pdF+diBolYDcfNemoMYM3R8PDjhnGrs/w3xJoDH1YMUVWHXXY8WhSmYZI7dyBehx/6kTfGFliVA==} 5115 resolution: {integrity: sha512-Be1d4oyFo60pdF+diBolYDcfNemoMYM3R8PDjhnGrs/w3xJoDH1YMUVWHXXY8WhSmYZI7dyBehx/6kTfGFliVA==}
4994 engines: {node: ^14.18.0 || >=16.10.0} 5116 engines: {node: ^14.18.0 || >=16.10.0}
@@ -5359,6 +5481,14 @@ packages: @@ -5359,6 +5481,14 @@ packages:
5359 mlly: 1.7.0 5481 mlly: 1.7.0
5360 pathe: 1.1.2 5482 pathe: 1.1.2
5361 5483
  5484 + /pkg-types@1.1.3:
  5485 + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==}
  5486 + dependencies:
  5487 + confbox: 0.1.7
  5488 + mlly: 1.7.1
  5489 + pathe: 1.1.2
  5490 + dev: false
  5491 +
5362 /postcss-calc@9.0.1(postcss@8.4.38): 5492 /postcss-calc@9.0.1(postcss@8.4.38):
5363 resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} 5493 resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==}
5364 engines: {node: ^14 || ^16 || >=18.0} 5494 engines: {node: ^14 || ^16 || >=18.0}
@@ -6569,6 +6699,26 @@ packages: @@ -6569,6 +6699,26 @@ packages:
6569 transitivePeerDependencies: 6699 transitivePeerDependencies:
6570 - rollup 6700 - rollup
6571 6701
  6702 + /unimport@3.7.2(rollup@4.17.2):
  6703 + resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==}
  6704 + dependencies:
  6705 + '@rollup/pluginutils': 5.1.0(rollup@4.17.2)
  6706 + acorn: 8.11.3
  6707 + escape-string-regexp: 5.0.0
  6708 + estree-walker: 3.0.3
  6709 + fast-glob: 3.3.2
  6710 + local-pkg: 0.5.0
  6711 + magic-string: 0.30.10
  6712 + mlly: 1.7.1
  6713 + pathe: 1.1.2
  6714 + pkg-types: 1.1.3
  6715 + scule: 1.3.0
  6716 + strip-literal: 2.1.0
  6717 + unplugin: 1.10.1
  6718 + transitivePeerDependencies:
  6719 + - rollup
  6720 + dev: false
  6721 +
6572 /unique-filename@3.0.0: 6722 /unique-filename@3.0.0:
6573 resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} 6723 resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==}
6574 engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 6724 engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -7036,6 +7186,14 @@ packages: @@ -7036,6 +7186,14 @@ packages:
7036 resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} 7186 resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==}
7037 dev: false 7187 dev: false
7038 7188
  7189 + /vue-gtag@2.0.1(vue@3.4.27):
  7190 + resolution: {integrity: sha512-aM4A58FVL0wV2ptYi+xzAjeg+pQVRyUcfBc5UkXAwQrR4t3WBhor50Izp2I+3Oo7+l+vWJ7u78DGcNzReb8S/A==}
  7191 + peerDependencies:
  7192 + vue: ^3.0.0
  7193 + dependencies:
  7194 + vue: 3.4.27
  7195 + dev: false
  7196 +
7039 /vue-i18n@9.13.1(vue@3.4.27): 7197 /vue-i18n@9.13.1(vue@3.4.27):
7040 resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==} 7198 resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==}
7041 engines: {node: '>= 16'} 7199 engines: {node: '>= 16'}