فهرست منبع

~~ 整体英文校验修改

王强 1 ماه پیش
والد
کامیت
2ae362f8a8

+ 89 - 54
i18n/locales/en.json

@@ -6,12 +6,12 @@
       "title1": "Cigarette Business",
       "title2": "New Tobacco Business",
       "t1": "Home",
-      "t2": "Group Overview",
+      "t2": "About Us",
       "t3": "News",
-      "t4": "Main Business",
-      "t5": "Talent Recruitment",
-      "t6": "Contact Information",
-      "t7": "Recruitment Information",
+      "t4": "Core Business",
+      "t5": "Careers",
+      "t6": "Contact Us",
+      "t7": "Job Vacancies",
       "t8": "Corporate Website",
       "newTitle": "News & Information",
       "more": "More",
@@ -91,23 +91,27 @@
       "yinsizhengceContent34": "For Confidentiality Officer",
       "wzasm": "Accessibility Statement",
       "wzasmContent1": "We are committed to ensuring that this website complies with the Web Content Accessibility Guidelines (WCAG) 2.1 AA level standards of the World Wide Web Consortium (W3C). However, this website contains a large amount of multimedia content, and it is not possible to ensure that all such content fully complies with all AA level standards. Nevertheless, such multimedia content is placed in specific locations to ensure that it does not hinder users from accessing important content on this website. If you have any inquiries, please email {email}, and we will do our best to provide you with the information you need in the required format.",
-      "banquansuoyou": "All Rights Reserved © China Tobacco International Group Co., Ltd.",
-      "tishi": "Smoking is harmful to health. This website contains tobacco-related content and is not intended for minors!",
+      "banquansuoyou": "Copyright © China Tobacco International Group Limited",
+      "tishi": "Smoking is harmful to health. This website contains tobacco-related content and is prohibited to persons under the age of 18.",
       "gengduoxinwen": "More News",
-      "zygjjt": "China Tobacco International Group Co., Ltd.",
-      "zygjjt1": "China Tobacco International Co., Ltd.",
-      "zygjjtContent": "China Tobacco International Group Co., Ltd. is located in Hong Kong, China, and is the overseas entity of China National Tobacco Corporation. Its main internal departments include Public Affairs Department, Strategic Development Department, Marketing Department, Supply Chain Department, Production and Operation Department, Finance Department, Human Resources Department, Information and Digitalization Department, Compliance and Risk Control Department, and Supervision Department, totaling 10 departments.",
-      "zygjjtContent1": "The group's invested companies focus on core businesses such as cigarette sales (including new tobacco products), leaf tobacco planting and processing, and cigarette production and manufacturing, and are located in more than ten countries and regions worldwide, including the UAE, the United States, Switzerland, Brazil, Argentina, Laos, Vietnam, and Hong Kong and Macau (China).",
-      "zygjjtContent2": "China Tobacco International Co., Ltd. is located in Beijing, China, and serves as the Beijing branch of China Tobacco International Group Co., Ltd. Its internal departments include the General Affairs Department, State Trade Department, and Financial Management Department, totaling 3 departments.",
-      "ywjs": "Business Introduction",
+      "zygjjt": "China Tobacco International Group Limited",
+      "zygjjt1": "China Tobacco International Inc.",
+      "zygjjtContent": "China Tobacco International Group Limited is headquartered in Hong Kong, China, and serves as the operational entity of China National Tobacco Corporation outside the Chinese mainland. Its internal structure primarily comprises the following 10 departments: ",
+      "zygjjtContent3": "Public Affairs Department, Strategy Development Department, Marketing Department, Supply Chain Department, Production & Operations Department, Finance Department, Human Resources Department, Information & Digitalization Department, Compliance & Risk Control Department, and Supervision Department. ",
+      "zygjjtContent1": "CTIG's subsidiaries focus on core businesses including tobacco product sales (including cigarettes, cigars, and new tobacco products), tobacco leaf cultivation and processing, and cigarette manufacturing. These subsidiaries operate in more than 10 countries and regions worldwide, such as the United Arab Emirates, the United States, Switzerland, Brazil, Argentina, Laos, Vietnam, China's Hong Kong, and Macau.",
+      "zygjjtContent2": "China Tobacco International Inc.is located in Beijing, China, and serves as the Beijing office for China Tobacco International Group Limited. Its internal structure comprises three departments: General Affairs Department, State Trade Operations Department, and Financial Management Department.",
+      "ywjs": "Business Overview",
       "ywjs1": "China Tobacco International Group Co., Ltd. mainly engages in the international business of cigarettes and new tobacco products, leaf tobacco, tobacco machinery, acetate tow, cigarette paper, and other raw and auxiliary products, as well as cigarette production and processing.",
+      "ywjs2": "China Tobacco International Group Limited drives the global expansion of China Tobacco through two key pillars:",
+      "ywjs3": "• Global Supply Chain: International trade of finished products (cigarettes and novel tobacco products), raw materials (tobacco leaf, acetate tow, cigarette paper), and machinery.",
+      "ywjs4": "• Overseas Manufacturing: End-to-end production and processing of cigarettes in international markets.",
       "ywzx": "Business Consultation",
-      "ywzx1": "Consultation on leaf tobacco, tobacco machinery, acetate tow, cigarette paper, etc.",
-      "ywzx2": "Consultation on cigarettes, new tobacco products, etc.",
-      "ywzx3": "Consultation on cigarette production and processing, etc.",
-      "contactAddress": "China Tobacco International Group Co., Ltd.",
-      "contactAddress1": "Room 1901, 19th Floor, South Tower, Concordia Plaza, No. 1 Science Museum Road, Kowloon, Hong Kong, China",
-      "tousu": "Complaint Channels",
+      "ywzx1": "Regarding Raw Materials (e.g., tobacco leaf, acetate tow, cigarette paper) and Machinery",
+      "ywzx2": "Regarding Cigarettes & Novel Tobacco Products",
+      "ywzx3": "Regarding Cigarette Production & Processing",
+      "contactAddress": "China Tobacco International Group Limited",
+      "contactAddress1": "Address: Room 1901, 19F., Green Field Tower, Concordia Plaza, 1 Science Museum Road, Tsim Sha Tsui East, Kowloon, Hong Kong, China",
+      "tousu": "Complaint and Whistleblowing Channels",
       "suoshuqiye": "Group Participating and Holding Enterprises",
       "jt": "Group",
       "ssqy": "Participating and Holding Enterprises",
@@ -249,24 +253,82 @@
           "nameEnglish": "Hongta Switzerland Romania"
         }
       ],
-      "contactAddress2": "Room 1908, 19th Floor, South Tower, Concordia Plaza, No. 1 Science Museum Road, Tsim Sha Tsui East, Kowloon, Hong Kong, Supervision Department",
+      "contactAddress2": "Supervision Department, Room 1908, 19F., Green Field Tower, Concordia Plaza, 1 Science Museum Road, Tsim Sha Tsui East, Kowloon, Hong Kong, China",
       "contactPhone": "852-26207376",
       "complaintsPhone": "852-26207376",
       "complaintsEmail": "",
-      "complaintsTime": "Working days 9:00—18:00 (Beijing Time)",
-      "laixinlaifangdizhi": "Mailing and Visiting Address",
+      "complaintsTime": "Weekdays 9:00 - 18:00 (Beijing Time)",
+      "laixinlaifangdizhi": "Address for Letters and Visits:",
       "lianxidianhua": "Contact Phone",
-      "tousudianhua": "Complaint Phone",
-      "tousuyouxiang": "Complaint Email",
-      "laifangjitousudianhuashoulishijian": "Reception Time for Visits and Complaint Calls",
+      "tousudianhua": "Complaint and Whistleblowing by Phone",
+      "tousuyouxiang": "Complaint and Whistleblowing by E-mail",
+      "laifangjitousudianhuashoulishijian": "Operating Hours for In-Person Visits and Complaint Hotline:",
       "shiyongzhinan": "User Guide",
       "list": [
         {
           "number": 1,
-          "title": "[Social Recruitment] Legal Professional Position"
+          "title": "【Open Positions】Employee Relations Position",
+          "date": "2025-06-07",
+          "joinTitle": "【Open Positions】Employee Relations Position",
+          "joinType": "Social Recruitment",
+          "joinPost": "Employee Relations Position: Specialist and above (Please apply via Jobsdb)",
+          "joinContentlist": [
+            {
+              "title": "Job Responsibilities:",
+              "content": [
+                "1. Assist in establishing, operating, maintaining, and improving the human resources management subsystem for the CTIG.",
+                "2. Participate in developing the job grade and classification system.",
+                "3. Support the recruitment process and manage employee lifecycle procedures, including those for probation, onboarding, regularization, transfer, resignation, and termination.",
+                "4. Assist in establishing and maintaining personnel records and managing employment contracts.",
+                "5. Receive and manage labor disputes and employee complaints, and support their resolution.",
+                "6. Analyze and research the labor compliance of subsidiary companies, proposing risk prevention and control measures.",
+                "7. Establish and maintain a knowledge base for international operations and an internal trainer pool.",
+                "8. Organize and execute training programs and daily management activities."
+              ]
+            },
+            {
+              "title": "Job Requirements:",
+              "content": [
+                "1. Bachelor's degree or higher in Human Resources Management, Administrative Management, or related fields.",
+                "2. Minimum of 3 years of relevant HR experience in Hong Kong-based enterprises.",
+                "3. Proficient knowledge of the Hong Kong Employment Ordinance and understanding of relevant labor policies in Hong Kong.",
+                "4. Strong communication and logical analysis skills; proficient in English across all four areas: listening, speaking, reading, and writing.",
+                "5. Proficient in MS Office applications; prior experience in developing management system documentation is preferred."
+              ]
+            }
+          ]
         },
         {
-          "number": 2
+          "number": 2,
+          "title": "【Open Positions】Legal Specialist Position",
+          "date": "2025-11-03",
+          "joinTitle": "【Open Positions】Legal Specialist Position",
+          "joinType": "",
+          "joinPost": "Legal officer(Please submit through Jobsdb)",
+          "joinContentlist": [
+            {
+              "title": "Qualifications :",
+              "content": [
+                "1. Bachelor of Laws in China or Master of Laws in Hong Kong;",
+                "2. Familiar with Hong Kong laws and regulations, with excellent Chinese and English legal writing and listening and speaking skills;",
+                "3. Good learning, research and analysis ability, organization and coordination ability and team spirit, and can withstand high-intensity work pressure;",
+                "4. Ability to confidentially handle sensitive information;",
+                "5. Excellent computer skills;",
+                "6. Minimum two years of experience dealing legal affairs;",
+                "7. Experience in the legal affairs of state-owned enterprises in Hong Kong and have passed the National Legal Qualification Examination are preferred."
+              ]
+            },
+            {
+              "title": "Job Responsibilities:",
+              "content": [
+                "1. Contract management: Assist in drafting and review of legal agreements and provide legal opinions;",
+                "2. Legal research: Assist in legal research in key markets, establish database of legal information, and regularly update the content of the database; ",
+                "3. Legal training: Assist in internal legal training, coordinate and liaise with training lawyers, and draft training programs;",
+                "4. Daily legal affairs: Draft or proofread emails, legal opinion letters, and other binding documents; Oversee and maintain company agreements, legal materials, case files, and other documentation;",
+                "5. Provide administrative support as requested by legal director."
+              ]
+            }
+          ]
         },
         {
           "number": 3
@@ -289,33 +351,6 @@
         {
           "number": 9
         }
-      ],
-      "joinTitle": "[Social Recruitment] Legal Professional Position",
-      "joinType": "",
-      "joinPost": "Legal officer",
-      "joinContentlist": [
-        {
-          "title": "Qualifications :",
-          "content": [
-            "1. Bachelor of Laws in China or Master of Laws in Hong Kong;",
-            "2. Familiar with Hong Kong laws and regulations, with excellent Chinese and English legal writing and listening and speaking skills;",
-            "3. Good learning, research and analysis ability, organization and coordination ability and team spirit, and can withstand high-intensity work pressure;",
-            "4. Ability to confidentially handle sensitive information;",
-            "5. Excellent computer skills;",
-            "6. Minimum two years of experience dealing legal affairs;",
-            "7. Experience in the legal affairs of state-owned enterprises in Hong Kong and have passed the National Legal Qualification Examination are preferred."
-          ]
-        },
-        {
-          "title": "Job Responsibilities:",
-          "content": [
-            "1. Contract management: Assist in drafting and review of legal agreements and provide legal opinions;",
-            "2. Legal research: Assist in legal research in key markets, establish database of legal information, and regularly update the content of the database; ",
-            "3. Legal training: Assist in internal legal training, coordinate and liaise with training lawyers, and draft training programs;",
-            "4. Daily legal affairs: Draft or proofread emails, legal opinion letters, and other binding documents; Oversee and maintain company agreements, legal materials, case files, and other documentation;",
-            "5. Provide administrative support as requested by legal director."
-          ]
-        }
       ]
     }
   }

+ 63 - 34
i18n/locales/zh-CN.json

@@ -106,7 +106,7 @@
     "ywzx2": "卷烟、新型烟草制品等业务咨询",
     "ywzx3": "卷烟生产加工等业务咨询",
     "contactAddress": "中烟国际集团有限公司",
-    "contactAddress1": "中国香港九龙科学馆道1号康宏广场南座19楼1901室",
+    "contactAddress1": "中国香港九龙尖沙咀东部科学馆道1号康宏广场南座19楼1901室",
     "tousu": "投诉渠道",
     "suoshuqiye": "集团参控股企业",
     "jt": "集团",
@@ -259,7 +259,7 @@
     "tousudianhua": "投诉电话",
     "tousuyouxiang": "投诉邮箱",
     "laifangjitousudianhuashoulishijian": "来访及投诉电话受理时间为",
-    "shiyongzhinan": "使用指南",
+    "shiyongzhinan": "用指南",
     "newsTitle": "国际集团组织员工参观沙头角禁区及香港回归",
     "newsTitle1": "纪念塔活动",
     "newsTitle2": "国际集团组织参观纪念抗战胜利80周年展览",
@@ -383,10 +383,68 @@
     "list": [
       {
         "number": 1,
-        "title": "【社会招聘】法务专业岗招聘"
+        "title": "【社会招聘】员工关系岗招聘",
+        "date": "2025-06-07",
+        "joinTitle": "【社会招聘】员工关系岗招聘",
+        "joinType": "社会招聘",
+        "joinPost": "员工关系岗 专员及以上(请通过Jobsdb投递)",
+        "joinContentlist": [
+          {
+            "title": "岗位职责:",
+            "content": [
+              "1.协助建立、运行、维护、改进国际集团人力资源子管理体系;",
+              "2.参与编制岗级体系;",
+              "3.协助开展人员招聘,办理员工试用、入职、转正、调动、离职等手续;",
+              "4.协助建立和维护人员信息档案,管理雇佣合同;",
+              "5.受理劳动争议和员工投诉,协助处理劳动纠纷;",
+              "6.分析研究下属企业用工合规性,提出风险防控措施;",
+              "7.建立维护国际业务知识库、内部培训师资库;",
+              "8.负责组织实施培训和日常管理。"
+            ]
+          },
+          {
+            "title": "岗位要求:",
+            "content": [
+              "1.大学本科及以上学历;人力资源管理、行政管理等管理类专业背景;",
+              "2.具有3年以上香港地区企业人力资源相关工作经验;",
+              "3.熟悉香港雇佣条例,了解香港劳动用工相关政策;",
+              "4.具有较强的沟通能力、逻辑分析能力、较好的英语听说读写水平;",
+              "5.熟练掌握office办公软件,具有管理体系文件编制经验优先。"
+            ]
+          }
+        ]
       },
       {
-        "number": 2
+        "number": 2,
+        "title": "【社会招聘】法务专员岗招聘",
+        "date": "2025-11-03",
+        "joinTitle": "【社会招聘】法务专员岗招聘",
+        "joinType": "",
+        "joinPost": "一、法务专员(请通过Jobsdb投递)",
+        "joinContentlist": [
+          {
+            "title": "资质要求:",
+            "content": [
+              "1.中国内地法学本科或香港法学硕士学历;",
+              "2.熟悉香港法律法规,具有优秀的中英文法律写作及听说表达能力;",
+              "3.具有良好的学习和研究分析能力,组织协调能力和团队精神,可承受较高强度工作压力;",
+              "4.能够保密处理敏感信息;",
+              "5.计算机技能优秀;",
+              "6.至少2年法律事务工作经验;",
+              "7.具有在港央企法律事务工作经验、通过中国内地法律资格考试者优先。"
+            ]
+          },
+          {
+            "title": "岗位职责:",
+            "content": [
+              " 1.合同管理:参与起草、审查公司各类法律档,对各类合同提出法律意见;",
+              "2.风险管理:协助开展公司及公司所属企业的风险事项管理,制订风险防范措施;",
+              "3.法律调研:开展重点市场法律环境信息调研,建立法律信息国别库,定期更新信息库内容;",
+              "4.法律培训:协助开展普法宣传和专项法律培训,协调联络培训律师,草拟培训方案;",
+              "5.日常法律事务:配合业务部门和其它职能部门处理公司日常法律事务。"
+            ]
+          }
+        ]
       },
       {
         "number": 3
@@ -405,37 +463,8 @@
       },
       {
         "number": 8
-      },
-      {
-        "number": 9
-      }
-    ],
-    "joinTitle": "【社会招聘】法务专业岗招聘",
-    "joinType": "",
-    "joinPost": "一、法务专员(请通过Jobsdb投递)",
-    "joinContentlist": [
-      {
-        "title": "资质要求:",
-        "content": [
-          "1.中国内地法学本科或香港法学硕士学历;",
-          "2.熟悉香港法律法规,具有优秀的中英文法律写作及听说表达能力;",
-          "3.具有良好的学习和研究分析能力,组织协调能力和团队精神,可承受较高强度工作压力;",
-          "4.能够保密处理敏感信息;",
-          "5.计算机技能优秀;",
-          "6.至少2年法律事务工作经验;",
-          "7.具有在港央企法律事务工作经验、通过中国内地法律资格考试者优先。"
-        ]
-      },
-      {
-        "title": "岗位职责:",
-        "content": [
-          " 1.合同管理:参与起草、审查公司各类法律档,对各类合同提出法律意见;",
-          "2.风险管理:协助开展公司及公司所属企业的风险事项管理,制订风险防范措施;",
-          "3.法律调研:开展重点市场法律环境信息调研,建立法律信息国别库,定期更新信息库内容;",
-          "4.法律培训:协助开展普法宣传和专项法律培训,协调联络培训律师,草拟培训方案;",
-          "5.日常法律事务:配合业务部门和其它职能部门处理公司日常法律事务。"
-        ]
       }
     ]
+    
   }
 }

+ 62 - 31
i18n/locales/zh-TW.json

@@ -106,7 +106,7 @@
     "ywzx2": "捲煙、新型煙草製品等業務諮詢",
     "ywzx3": "捲煙生產加工等業務諮詢",
     "contactAddress": "中煙國際集團有限公司",
-    "contactAddress1": "中國香港九龍科學館道1號康宏廣場南座19樓1901室",
+    "contactAddress1": "中國香港九龍尖沙咀東部科學館道1號康宏廣場南座19樓1901室",
     "tousu": "投訴渠道",
     "suoshuqiye": "集團參控股企業",
     "jt": "集團",
@@ -264,7 +264,7 @@
     "tousudianhua": "投訴電話",
     "tousuyouxiang": "投訴郵箱",
     "laifangjitousudianhuashoulishijian": "來訪及投訴電話受理時間為",
-    "shiyongzhinan": "使用指南",
+    "shiyongzhinan": "用指南",
     "newsTitle": "國際集團組織員工參觀沙頭角禁區及香港回歸",
     "newsTitle1": "紀念塔活動",
     "newsTitle2": "國際集團組織參觀紀念抗戰勝利80周年展覽",
@@ -388,10 +388,68 @@
     "list": [
       {
         "number": 1,
-        "title": "【社會招聘】法務專業崗招聘"
+        "title": "【社會招聘】員工關係崗招聘",
+        "date": "2025-06-07",
+        "joinTitle": "【社會招聘】員工關係崗招聘",
+        "joinType": "社會招聘",
+        "joinPost": "員工關係崗 專員及以上(請透過 Jobsdb 投遞)",
+        "joinContentlist": [
+          {
+            "title": "崗位職責:",
+            "content": [
+              "1. 協助建立、運行、維護、改進國際集團人力資源子管理體系;",
+              "2. 參與編制崗級體系;",
+              "3. 協助開展人員招聘,辦理員工試用、入職、轉正、調動、離職等手續;",
+              "4. 協助建立和維護人員信息檔案,管理僱傭合同;",
+              "5. 受理勞動爭議和員工投訴,協助處理勞動糾紛;",
+              "6. 分析研究下屬企業用工合規性,提出風險防控措施;",
+              "7. 建立維護國際業務知識庫、內部培訓師資庫;",
+              "8. 負責組織實施培訓和日常管理。"
+            ]
+          },
+          {
+            "title": "崗位要求:",
+            "content": [
+              "1. 大學本科及以上學歷;人力資源管理、行政管理等管理類專業背景;",
+              "2. 具有3年以上香港地區企業人力資源相關工作經驗;",
+              "3. 熟悉香港僱傭條例,了解香港勞動用工相關政策;",
+              "4. 具有較強的溝通能力、邏輯分析能力、較好的英語聽說讀寫水平;",
+              "5. 熟練掌握 Office 辦公軟體,具有管理體系文件編制經驗者優先。"
+            ]
+          }
+        ]
       },
       {
-        "number": 2
+        "number": 2,
+        "title": "【社會招聘】法務專員崗招聘",
+        "date": "2025-11-03",
+        "joinTitle": "【社會招聘】法務專員崗招聘",
+        "joinType": "",
+        "joinPost": "一、法務專員(請透過 Jobsdb 投遞)",
+        "joinContentlist": [
+          {
+            "title": "資質要求:",
+            "content": [
+              "1.中國內地法學本科或香港法學碩士學歷;",
+              "2.熟悉香港法律法規,具有優秀的中英文法律寫作及聽說表達能力;",
+              "3.具有良好的學習和研究分析能力,組織協調能力和團隊精神,可承受較高強度工作壓力;",
+              "4.能夠保密處理敏感資訊;",
+              "5.電腦技能優秀;",
+              "6.至少2年法律事務工作經驗;",
+              "7.具有在港央企法律事務工作經驗、通過中國內地法律資格考試者優先。"
+            ]
+          },
+          {
+            "title": "崗位職責:",
+            "content": [
+              "1.合同管理:參與起草、審查公司各類法律檔,對各類合同提出法律意見;",
+              "2.風險管理:協助開展公司及公司所屬企業的風險事項管理,制訂風險防範措施;",
+              "3.法律調研:開展重點市場法律環境信息調研,建立法律信息國別庫,定期更新信息庫內容;",
+              "4.法律培訓:協助開展普法宣傳和專項法律培訓,協調聯絡培訓律師,草擬培訓方案;",
+              "5.日常法律事務:配合業務部門和其它職能部門處理公司日常法律事務。"
+            ]
+          }
+        ]
       },
       {
         "number": 3
@@ -414,33 +472,6 @@
       {
         "number": 9
       }
-    ],
-    "joinTitle": "【社會招聘】法務專業崗招聘",
-    "joinType": "",
-    "joinPost": "一、法務專員(請透過 Jobsdb 投遞)",
-    "joinContentlist": [
-      {
-        "title": "資質要求:",
-        "content": [
-          "1.中國內地法學本科或香港法學碩士學歷;",
-          "2.熟悉香港法律法規,具有優秀的中英文法律寫作及聽說表達能力;",
-          "3.具有良好的學習和研究分析能力,組織協調能力和團隊精神,可承受較高強度工作壓力;",
-          "4.能夠保密處理敏感資訊;",
-          "5.電腦技能優秀;",
-          "6.至少2年法律事務工作經驗;",
-          "7.具有在港央企法律事務工作經驗、通過中國內地法律資格考試者優先。"
-        ]
-      },
-      {
-        "title": "崗位職責:",
-        "content": [
-          "1.合同管理:參與起草、審查公司各類法律檔,對各類合同提出法律意見;",
-          "2.風險管理:協助開展公司及公司所屬企業的風險事項管理,制訂風險防範措施;",
-          "3.法律調研:開展重點市場法律環境信息調研,建立法律信息國別庫,定期更新信息庫內容;",
-          "4.法律培訓:協助開展普法宣傳和專項法律培訓,協調聯絡培訓律師,草擬培訓方案;",
-          "5.日常法律事務:配合業務部門和其它職能部門處理公司日常法律事務。"
-        ]
-      }
     ]
   }
 }

+ 9 - 4
src/App.vue

@@ -28,16 +28,21 @@ const addcount =()=>{
 <template>
   <div v-if="ageModalVisible" class="age-modal">
     <div class="age-modal-content">
-      <div class="age-modal-title">本人年满18岁声明</div>
+      <div class="age-modal-title">
+        <div>本人年满18岁声明</div>
+        <div><div>Declaration of Being Aged 18 or Above</div>
+      </div>
+      </div>
+      
       <div class="age-modal-desc">
         根据香港法律,不得在业务过程中,向未成年人售卖或供应烟。<br>
         <span style="font-size:0.95rem;color:#666;">
-          Under the law of Hong Kong, tobacco must not be sold or supplied to a minor in the course of business.
+          In accordance with the laws of the HKSAR, the sale and supply of tobacco products to persons under the age of 18 in the course of business is prohibited by law.
         </span>
       </div>
       <div class="age-modal-actions">
-        <button class="age-btn deny" @click="denyEnter">否,未满18岁<br>No, I'm under 18.</button>
-        <button class="age-btn confirm" @click="confirmEnter">确认进入<br>Confirm</button>
+        <button class="age-btn deny" @click="denyEnter">否,未满18岁<br>No, I am not 18 or above.</button>
+        <button class="age-btn confirm" @click="confirmEnter">确认进入<br>Enter</button>
       </div>
     </div>
   </div>

+ 2 - 2
src/components/common/footer/FooterNew.vue

@@ -197,8 +197,8 @@ body.no-scroll {
 }
 
 .footerFooter {
-    width: 95%;
-    font-size: 0.9rem;
+    width: 100%;
+    font-size: 0.8rem;
     margin-top: 1rem;
 }
 

+ 171 - 155
src/views/IndexView.vue

@@ -1,6 +1,6 @@
 <script setup>
 import Layout from '../components/common/Layout.vue';
-import { onBeforeUnmount, onMounted, ref ,computed} from "vue";
+import { onBeforeUnmount, onMounted, ref, computed } from "vue";
 import { onLanguageChange, getCurrentLanguage } from '@/utils/language.js';
 import { getstudentAPI } from '@/apis/studentlistAPI.js';
 import { getSlidephotoAPI, getAdvantageAPI, getServiceAPI } from '@/apis/indexAPI.js';
@@ -75,7 +75,7 @@ const serviceList = ref([
 	{ id: 2, icon: 'am-icon-user', title: '多页面工作', desc: '标签栏可切换,不必为了新内容而被迫跳转界面,多项工作内容并行处理' },
 	{ id: 3, icon: 'am-icon-umbrella', title: '多页面工作', desc: '标签栏可切换,不必为了新内容而被迫跳转界面,多项工作内容并行处理' },
 	{ id: 4, icon: 'am-icon-briefcase', title: '多页面工作', desc: '标签栏可切换,不必为了新内容而被迫跳转界面,多项工作内容并行处理' },
-]);const changeTab = (ind) => {
+]); const changeTab = (ind) => {
 	tabIndex.value = ind
 	// indexPhoto.value.style.opcity = '1'
 }
@@ -154,7 +154,7 @@ const newsList = ref([
 	},
 ])
 // 获取新闻列表
-const newsListIndex = computed(()=>messages.value[locale.value].message.newsListIndex)
+const newsListIndex = computed(() => messages.value[locale.value].message.newsListIndex)
 // 引用zh-CN里面的companyList数组
 const companyList = computed(() => messages.value[locale.value].message.companyList)
 const route = useRouter();
@@ -267,53 +267,55 @@ onBeforeUnmount(() => {
 		</div>
 		<div v-else>
 			<div class="contactContainer1">
-                    <div class="contactContent">
-                        <div>{{ $t("message.ywjs") }}</div>
-                        <div class="fw">{{ $t('message.ywjs1') }}</div>
-                    </div>
-                    <div class="contactContent">
-                        <div>{{ $t('message.ywzx') }}</div>
-
-                        <div class="cardContent">
-                            <div>
-                                <img src="../assets/images/call.png" alt="">
-                                <div>
-                                    +852-26206011
-                                </div>
-                                <div>
-                                    marketing@cti-group.com.hk
-                                </div>
-                                <div>
-                                    <div>{{ $t('message.ywzx2') }}</div>
-                                </div>
-                            </div>
-                            <div>
-                                <img src="../assets/images/call.png" alt="">
-                                <div>
-                                    +852-26206308
-                                </div>
-                                <div>
-                                    supplychain@cti-group.com.hk
-                                </div>
-                                <div>
-                                    <div>{{ $t('message.ywzx1') }}</div>
-                                </div>
-                            </div>
-                            <div>
-                                <img src="../assets/images/call.png" alt="">
-                                <div>
-                                    +852-26206055
-                                </div>
-								<div>
-									production@cti-group.com.hk
-								</div>
-                                <div>
-                                    <div>{{ $t('message.ywzx3') }}</div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
+				<div class="contactContent">
+					<div>{{ $t("message.ywjs") }}</div>
+					<div class="fw" style="	text-indent: 2em;">{{ $t('message.ywjs2') }}</div>
+					<div class="fw">{{ $t('message.ywjs3') }}</div>
+					<div class="fw">{{ $t('message.ywjs4') }}</div>
+				</div>
+				<div class="contactContent">
+					<div>{{ $t('message.ywzx') }}</div>
+
+					<div class="cardContent">
+						<div>
+							<img src="../assets/images/call.png" alt="">
+							<div>
+								+852-26206011
+							</div>
+							<div>
+								marketing@cti-group.com.hk
+							</div>
+							<div>
+								<div>{{ $t('message.ywzx2') }}</div>
+							</div>
+						</div>
+						<div>
+							<img src="../assets/images/call.png" alt="">
+							<div>
+								+852-26206308
+							</div>
+							<div>
+								supplychain@cti-group.com.hk
+							</div>
+							<div>
+								<div>{{ $t('message.ywzx1') }}</div>
+							</div>
+						</div>
+						<div>
+							<img src="../assets/images/call.png" alt="">
+							<div>
+								+852-26206055
+							</div>
+							<div>
+								production@cti-group.com.hk
+							</div>
+							<div>
+								<div>{{ $t('message.ywzx3') }}</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
 		</div>
 		<!-- <div class="group-section">
 			<div class="group-title">{{ $t('message.suoshuqiye') }}</div>
@@ -1112,147 +1114,161 @@ onBeforeUnmount(() => {
 	background-color: #fafafa;
 	width: 100%;
 }
+
 .age-modal {
-  position: fixed;
-  z-index: 99999;
-  left: 0; top: 0; right: 0; bottom: 0;
-  background: rgba(0,0,0,0.55);
-  display: flex;
-  align-items: center;
-  justify-content: center;
+	position: fixed;
+	z-index: 99999;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	background: rgba(0, 0, 0, 0.55);
+	display: flex;
+	align-items: center;
+	justify-content: center;
 }
+
 .age-modal-content {
-  background: #fff;
-  border-radius: 12px;
-  box-shadow: 0 4px 32px rgba(0,0,0,0.18);
-  padding: 2.5rem 2rem 2rem;
-  max-width: 350px;
-  width: 90%;
-  text-align: center;
+	background: #fff;
+	border-radius: 12px;
+	box-shadow: 0 4px 32px rgba(0, 0, 0, 0.18);
+	padding: 2.5rem 2rem 2rem;
+	max-width: 350px;
+	width: 90%;
+	text-align: center;
 }
+
 .age-modal-title {
-  font-size: 1.3rem;
-  font-weight: bold;
-  margin-bottom: 1.2rem;
-  color: #c9082c;
+	font-size: 1.3rem;
+	font-weight: bold;
+	margin-bottom: 1.2rem;
+	color: #c9082c;
 }
+
 .age-modal-desc {
-  font-size: 1.05rem;
-  margin-bottom: 2rem;
-  color: #333;
+	font-size: 1.05rem;
+	margin-bottom: 2rem;
+	color: #333;
 }
+
 .age-modal-actions {
-  display: flex;
-  justify-content: space-between;
-  gap: 1.2rem;
+	display: flex;
+	justify-content: space-between;
+	gap: 1.2rem;
 }
+
 .age-btn {
-  flex: 1;
-  padding: 0.7rem 0.2rem;
-  border-radius: 6px;
-  border: none;
-  font-size: 1rem;
-  cursor: pointer;
-  font-weight: bold;
-  transition: background 0.2s;
+	flex: 1;
+	padding: 0.7rem 0.2rem;
+	border-radius: 6px;
+	border: none;
+	font-size: 1rem;
+	cursor: pointer;
+	font-weight: bold;
+	transition: background 0.2s;
 }
+
 .age-btn.deny {
-  background: #eee;
-  color: #c9082c;
+	background: #eee;
+	color: #c9082c;
 }
+
 .age-btn.confirm {
-  background: #F7B334;
-  color: #fff;
+	background: #F7B334;
+	color: #fff;
 }
+
 .age-btn:hover {
-  opacity: 0.85;
+	opacity: 0.85;
 }
+
 .contactContainer1 {
-    width: 100%;
-    height: 100%;
-    background-color: #f7f7f7;
-    padding-bottom: 5rem;
+	width: 100%;
+	height: 100%;
+	background-color: #f7f7f7;
+	padding-bottom: 5rem;
 }
 
 .contact {
-    width: 100%;
+	width: 100%;
 
 }
 
 .fw {
-    // font-weight: 550;
-    color: #444;
+	// font-weight: 550;
+	color: #444;
+	margin-top: 2rem;
 }
 
 .bgImg {
-    width: 100%;
+	width: 100%;
 
-    >img {
-        width: 100%;
-        height: 100%;
-    }
+	>img {
+		width: 100%;
+		height: 100%;
+	}
 }
 
 .contactContent {
-    width: 65%;
-    margin: 0px auto 20px;
-    font-size: 1.3rem;
-    padding-top: 3rem;
-
-    >div:nth-child(1) {
-        font-size: 1.5rem;
-        color: #F7B334;
-        font-weight: bold;
-        margin-bottom: 1.7rem;
-    }
+	width: 65%;
+	margin: 0px auto 20px;
+	font-size: 1.3rem;
+	padding-top: 3rem;
+
+	>div:nth-child(1) {
+		font-size: 1.5rem;
+		color: #F7B334;
+		font-weight: bold;
+		margin-bottom: 1.7rem;
+	}
 
 }
 
 .cardContent {
-    display: flex;
-    justify-content: space-between;
-
-    >div {
-        width: 30%;
-        // height: 15rem;
-        background: #fff;
-        padding: 1rem;
-        text-align: center;
-        font-size: 1.6rem;
-        font-weight: 550;
-        color: #444;
-
-        >img {
-            width: 3rem;
-            height: 3rem;
-            margin: 2rem 0rem 0rem 0rem
-        }
-
-        >div:nth-child(2) {
-            font-size: 2.2rem;
-            color: #F7B334;
-        }
-
-        >div:nth-child(3),
-        >div:nth-child(4) {
-            font-size: 0.9rem;
-            color: #333;
-            margin-top: 0.5rem;
-        }
-    }
-
-    @media screen and (max-width: 767px) {
-        width: 100%;
-        display: block;
-
-        >div {
-            padding: 0rem;
-            width: 100%;
-            margin-bottom: 2rem;
-            padding-bottom: 2rem;
-            padding-top: 1rem;
-        }
-
-    }
+	display: flex;
+	justify-content: space-between;
+
+	>div {
+		width: 30%;
+		// height: 15rem;
+		background: #fff;
+		padding: 1rem;
+		text-align: center;
+		font-size: 1.6rem;
+		font-weight: 550;
+		color: #444;
+
+		>img {
+			width: 3rem;
+			height: 3rem;
+			margin: 2rem 0rem 0rem 0rem
+		}
+
+		>div:nth-child(2) {
+			font-size: 2.2rem;
+			color: #F7B334;
+		}
+
+		>div:nth-child(3),
+		>div:nth-child(4) {
+			font-size: 0.9rem;
+			color: #333;
+			margin-top: 0.5rem;
+		}
+	}
+
+	@media screen and (max-width: 767px) {
+		width: 100%;
+		display: block;
+
+		>div {
+			padding: 0rem;
+			width: 100%;
+			margin-bottom: 2rem;
+			padding-bottom: 2rem;
+			padding-top: 1rem;
+		}
+
+	}
 }
 </style>

+ 67 - 5
src/views/JoinDetail.vue

@@ -3,9 +3,71 @@ import { onMounted, ref ,computed} from 'vue';
 import { useRouter } from 'vue-router';
 import { useI18n } from 'vue-i18n'
 const { t, locale, messages } = useI18n();
-const joinContentList = computed(()=> messages.value[locale.value].message.joinContentlist)
+// const joinContentList = computed(()=> messages.value[locale.value].message.joinContentlist)
+const props = defineProps({
+    number: {
+        type: Number,
+        required: true
+    }
+});
+// 取出当前列表项的標題(兼容不同 locale 中 list 項的字段名)
+const joinTitle = computed(() => {
+    const idx = props.number-1;
+    const list = messages.value?.[locale.value]?.message?.list;
+    if (!list || !Number.isInteger(idx)) return '';
+    const item = list[idx];
+    console.log(list);
+    
+    console.log(list[idx]);
+    
+    if (!item) return '';
+    console.log(item);
+    
+    // 支持不同命名:优先使用 joinTitle,再回退到 title
+    return item.joinTitle ?? item.title ?? '';
+});
+const joinType = computed(() => {
+    const idx = props.number-1;
+    const list = messages.value?.[locale.value]?.message?.list;
+    if (!list || !Number.isInteger(idx)) return '';
+    const item = list[idx];
+    if (!item) return '';
+    // 支持不同命名:优先使用 joinType,再回退到 date
+    return item.joinType ?? item.date ?? '';
+});
+const date = computed(() => {
+    const idx = props.number-1;
+    const list = messages.value?.[locale.value]?.message?.list;
+    if (!list || !Number.isInteger(idx)) return '';
+    const item = list[idx];
+    if (!item) return '';
+    // 支持不同命名:优先使用 date,再回退到 date
+    return item.date ?? item.date ?? '';
+});
+const joinPost = computed(() => {
+    const idx = props.number-1;
+    const list = messages.value?.[locale.value]?.message?.list;
+    if (!list || !Number.isInteger(idx)) return '';
+    const item = list[idx];
+    if (!item) return '';
+    // 支持不同命名:优先使用 joinPost,再回退到 joinPost
+    return item.joinPost ?? item.joinPost ?? '';
+});
+const joinContentList = computed(() => {
+    const idx = props.number-1;
+    const list = messages.value?.[locale.value]?.message?.list;
+    if (!list || !Number.isInteger(idx)) return [];
+    const item = list[idx];
+    if (!item) return [];
+    // 支持不同命名:优先使用 joinContentList,再回退到 joinContentlist
+    return item.joinContentList ?? item.joinContentlist ?? [];
+});
+
+
+
 const router = useRouter();
 const emit = defineEmits(['goBack']);
+
 const goBack = () => {
     console.log('返回招聘列表');
     emit('goBack',false);
@@ -18,13 +80,13 @@ const goBack = () => {
         <div class="back" @click="goBack"> 
            <img src="../assets/images/back.png" alt="">
         </div>
-        <div class="joinDetailTitle">{{ $t("message.joinTitle") }}</div>
+        <div class="joinDetailTitle">{{ joinTitle }}</div>
         <div class="date">
-            <div>{{ $t("message.joinType") }}</div>
-            <!-- <div>2025-06-07 08:30:00</div> -->
+            <div>{{ joinType }}</div>
+            <div>{{ date }}</div>
         </div>
         <div class="joinContent">
-            <div class="joinTitle">{{ $t("message.joinPost")}}</div>
+            <div class="joinTitle">{{ joinPost}}</div>
             <div v-for="(item, index) in joinContentList" :key="index" class="joinContentItem">
                 <div class="joinContentTitle">{{ item.title }}</div>
                 <div>

+ 8 - 4
src/views/JoinUs.vue

@@ -6,11 +6,15 @@ import { useI18n } from 'vue-i18n'
 const { t, locale, messages } = useI18n();
 const list = computed(() => messages.value[locale.value].message.list)
 const isShowDetail = ref(false); // 控制招聘详情的显示
+// 展示第几条招聘详情
+const index = ref(0);
 const handleClick = (n) => {
     // 处理点击事件,显示招聘详情
     console.log('招聘信息被点击');
-    if (n == 1) {
+    if (n == 1 || n == 2) {
+        index.value = n;
         isShowDetail.value = true;
+
     } else {
         return
     }
@@ -34,13 +38,13 @@ const handleGoBack = (val) => {
                 </div>
                 <div class="join-content" v-if="!isShowDetail">
                     <div class="joinTitle">{{ $t("message.t7") }}</div>
-                    <div v-for="(item, index) in list" :key="item.number" class="joinContentItem" :style="{ cursor: item.number == 1 ? 'pointer' : 'default' }"
-                        @click="handleClick(item.number)">
+                    <div v-for="(item, index) in list" :key="item.number" class="joinContentItem"
+                        :style="{ cursor: item.number == 1 ||item.number == 2 ? 'pointer' : 'default' }" @click="handleClick(item.number)">
                         <div>{{ item.title }}</div>
                         <div>{{ item.date }}</div>
                     </div>
                 </div>
-                <JoinDetail @goBack="handleGoBack" v-else />
+                <JoinDetail @goBack="handleGoBack" :number="index" v-else />
 
             </div>
         </Layout>

+ 23 - 3
src/views/MainBusiness.vue

@@ -1,7 +1,23 @@
 <script setup>
-import { nextTick, onMounted, ref } from 'vue';
+import { nextTick, onMounted, ref, onBeforeUnmount } from 'vue';
 import Layout from '../components/common/Layout.vue';
 import { yangyEmail } from '@/config/contact.js';
+import { onLanguageChange, getCurrentLanguage } from '@/utils/language.js';
+import { useI18n } from 'vue-i18n';
+const { t, locale, messages } = useI18n();
+const currentLanguage = ref(getCurrentLanguage());
+const offLanguageListener = ref(null);
+// 订阅全局语言变更事件(使用 utils 封装)
+offLanguageListener.value = onLanguageChange((lang) => {
+    currentLanguage.value = lang;
+});
+onBeforeUnmount(() => {
+    // 取消语言变更监听
+    if (offLanguageListener.value) {
+        offLanguageListener.value();
+        offLanguageListener.value = null;
+    }
+})
 </script>
 <template>
     <div>
@@ -16,7 +32,11 @@ import { yangyEmail } from '@/config/contact.js';
                 <div class="contactContainer1">
                     <div class="contactContent">
                         <div>{{ $t("message.ywjs") }}</div>
-                        <div class="fw">{{ $t('message.ywjs1') }}</div>
+                        <div class="fw" style="	text-indent: 2em;" v-if="currentLanguage == 'zhTW' || currentLanguage == 'zhCN'">{{
+                            $t('message.ywjs1') }}</div>
+                        <div class="fw" v-if="currentLanguage == 'en'" >{{ $t('message.ywjs2') }}</div>
+                        <div class="fw" v-if="currentLanguage == 'en'">{{ $t('message.ywjs3') }}</div>
+                        <div class="fw" v-if="currentLanguage == 'en'">{{ $t('message.ywjs4') }}</div>
                     </div>
                     <div class="contactContent">
                         <div>{{ $t('message.ywzx') }}</div>
@@ -53,7 +73,7 @@ import { yangyEmail } from '@/config/contact.js';
                                 </div>
                                 <div>
                                     <!-- {{ yangyEmail }} -->
-                                      production@cti-group.com.hk
+                                    production@cti-group.com.hk
                                 </div>
                                 <div>
                                     <div>{{ $t('message.ywzx3') }}</div>

+ 17 - 2
src/views/Solution.vue

@@ -1,6 +1,20 @@
 <script setup>
-import Layout from '@/components/common/Layout.vue'
-import { onMounted, onUpdated, ref } from 'vue'
+import Layout from '@/components/common/Layout.vue';
+import { onMounted, onUpdated, ref,onBeforeUnmount } from 'vue';
+import { onLanguageChange, getCurrentLanguage } from '@/utils/language.js';
+const currentLanguage = ref(getCurrentLanguage());
+const offLanguageListener = ref(null);
+	// 订阅全局语言变更事件(使用 utils 封装)
+	offLanguageListener.value = onLanguageChange((lang) => {
+		currentLanguage.value = lang;
+	});
+    onBeforeUnmount(() => {
+	// 取消语言变更监听
+	if (offLanguageListener.value) {
+		offLanguageListener.value();
+		offLanguageListener.value = null;
+	}
+})
 
 const projectTitleref = ref()
 const projectBox = ref()
@@ -30,6 +44,7 @@ onUpdated(() => {
         <div>
           <div class="title">{{ $t('message.zygjjt') }}</div>
           <div>{{ $t('message.zygjjtContent') }}</div>
+          <div v-if="currentLanguage == 'en'">{{  $t('message.zygjjtContent3')}}</div>
           <div>{{ $t('message.zygjjtContent1') }}</div>
         </div>
         <div class="content2">

+ 1 - 7
src/views/components/LanguageSwitcher.vue

@@ -50,13 +50,9 @@ const changeLanguage = (lang) => {
   localStorage.setItem('language', lang);
   // 触发自定义事件,通知其他组件语言已更改
   window.dispatchEvent(new CustomEvent('languageChanged', { detail: lang }));
-
-  console.log(`语言已切换为: ${lang}`);
   // 如果当前的语言是英语,把.nav字体改成Helvetica, Arial, sans-serif
   if (lang === 'en') {
     const path = router.currentRoute.value.path; // 或 fullPath
-    console.log('当前路径:', path);
-
     if (path.startsWith('/newsDetail') || path.startsWith('/news')) {
       router.replace({ path: '/index', query: {} });
     } else {
@@ -86,7 +82,7 @@ const handleResize = () => {
   screenWidth.value = window.innerWidth;
 
   // 当页面宽度小于768时,隐藏类名是changeItem的div
-  if (screenWidth.value < 768) {
+  if (screenWidth.value < 769) {
     // 获取类名是changeItem的全部div
     document.querySelectorAll('.changeItem').forEach(item => {
       item.style.display = 'none'
@@ -132,8 +128,6 @@ onMounted(() => {
       navElement.style.fontFamily = "'Source Han Sans CN', 'Source Han Sans SC', 'Noto Sans CJK SC', 'Noto Sans SC', 'SimHei', 'Microsoft YaHei', 'Heiti SC', 'PingFang SC', 'WenQuanYi Micro Hei', 'Helvetica Neue', Helvetica, Arial, sans-serif";
     }
   }
-  console.log(`初始化语言: ${savedLanguage}`);
-
   // 延迟执行响应式处理,避免与dropdown初始化冲突
   // setTimeout(() => {
   // 添加resize监听器