- 添加中文、英文和日文的招聘相关翻译内容 - 实现职位卡片的多语言显示功能 - 移除不再使用的产品数据 - 新增招聘页面相关图片资源master
@@ -3,11 +3,9 @@ | |||
class="job-card group cursor-pointer" | |||
@click="handleClick" | |||
> | |||
<div class="relative p-8 bg-zinc-800/30 backdrop-blur-sm border border-zinc-700/30 rounded-2xl transition-all duration-700 hover:border-[#35F1FF]/50 hover:bg-zinc-800/50 hover:shadow-2xl hover:shadow-[#35F1FF]/10 hover:transform hover:scale-105"> | |||
<div class="absolute inset-0 bg-gradient-to-br from-[#35F1FF]/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-700 rounded-2xl"></div> | |||
<div class="absolute -top-2 -right-2 w-4 h-4 bg-[#35F1FF]/20 rounded-full animate-ping group-hover:animate-pulse"></div> | |||
<!-- <div class="absolute inset-0 bg-gradient-to-br from-[#35F1FF]/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-700 rounded-2xl"></div> | |||
<div class="absolute -top-2 -right-2 w-4 h-4 bg-[#35F1FF]/20 rounded-full animate-ping group-hover:animate-pulse"></div> --> | |||
<div class="relative"> | |||
<!-- 职位标题 --> | |||
@@ -44,7 +42,7 @@ | |||
<svg class="w-4 h-4 mr-2 text-[#35F1FF]" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path> | |||
</svg> | |||
工作职责 | |||
{{ t('careers.PositionCard.job') }} | |||
</h5> | |||
<div class="text-zinc-300/80 text-sm leading-relaxed line-clamp-3"> | |||
{{ formatJobDescription(job.jobResponsibilities) }} | |||
@@ -57,7 +55,7 @@ | |||
<svg class="w-4 h-4 mr-2 text-[#35F1FF]" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"></path> | |||
</svg> | |||
薪资福利 | |||
{{ t('careers.PositionCard.CB') }} | |||
</h5> | |||
<div class="text-zinc-300/80 text-sm leading-relaxed line-clamp-2"> | |||
{{ formatBenefits(job.benefits) }} | |||
@@ -70,7 +68,7 @@ | |||
<svg class="w-4 h-4 mr-2 text-[#35F1FF]" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path> | |||
</svg> | |||
工作时间 | |||
{{ t('careers.PositionCard.workingHours') }} | |||
</h5> | |||
<div class="text-zinc-300/80 text-sm leading-relaxed"> | |||
{{ formatWorkTime(job.workTime) }} | |||
@@ -80,13 +78,13 @@ | |||
<!-- 申请按钮 --> | |||
<div class="flex justify-between items-center pt-4 border-t border-zinc-700/30"> | |||
<div class="text-xs text-zinc-500"> | |||
{{ formatDate(job.updateTime) }} 更新 | |||
{{ formatDate(job.updateTime) }} {{ t('careers.PositionCard.update') }} | |||
</div> | |||
<button | |||
class="inline-flex items-center px-6 py-2 bg-[#35F1FF]/10 text-[#35F1FF] text-sm font-medium rounded-lg border border-[#35F1FF]/30 hover:bg-[#35F1FF]/20 hover:border-[#35F1FF]/50 transition-all duration-300 group-hover:scale-105" | |||
@click.stop="handleApply" | |||
> | |||
<span class="mr-2">立即申请</span> | |||
<span class="mr-2">{{ t('careers.PositionCard.JobDetails') }}</span> | |||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path> | |||
</svg> | |||
@@ -117,24 +115,24 @@ | |||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path> | |||
</svg> | |||
</div> | |||
<h3 class="text-xl font-semibold text-white mb-2">投递简历</h3> | |||
<p class="text-zinc-400 text-sm">请将您的简历发送至以下邮箱</p> | |||
<h3 class="text-xl font-semibold text-white mb-2">{{ t('careers.jobs.button') }}</h3> | |||
<p class="text-zinc-400 text-sm">{{ t('contact.submit') }}</p> | |||
</div> | |||
<!-- 职位信息 --> | |||
<div class="bg-zinc-800/50 rounded-xl p-4 mb-6"> | |||
<div class="text-sm text-zinc-400 mb-2">申请职位</div> | |||
<div class="text-sm text-zinc-400 mb-2">{{ t('careers.jobs.title') }}</div> | |||
<div class="text-white font-medium">{{ job.name }}</div> | |||
<div class="text-xs text-zinc-500 mt-1">ID: {{ job.id }}</div> | |||
</div> | |||
<!-- 邮箱信息 --> | |||
<div class="bg-zinc-800/50 rounded-xl p-4 mb-6"> | |||
<div class="text-sm text-zinc-400 mb-2">投递邮箱</div> | |||
<div class="text-sm text-zinc-400 mb-2">{{ t('contact.email') }}</div> | |||
<div class="flex items-center justify-between"> | |||
<div class="text-[#35F1FF] font-medium break-all">{{ job.email }}</div> | |||
<button @click="copyEmail" class="ml-3 px-3 py-1 bg-[#35F1FF]/10 text-[#35F1FF] text-xs rounded-lg hover:bg-[#35F1FF]/20 transition-colors flex-shrink-0"> | |||
{{ copied ? '已复制' : '复制' }} | |||
{{ copied ? t('common.copied') : t('common.copy') }} | |||
</button> | |||
</div> | |||
</div> | |||
@@ -142,7 +140,7 @@ | |||
<!-- 操作按钮 --> | |||
<div class="flex gap-3"> | |||
<button @click="closeModal" class="flex-1 px-4 py-2 bg-zinc-800/80 text-zinc-300 rounded-lg hover:bg-zinc-700/80 transition-colors"> | |||
关闭 | |||
{{ t('common.close') }} | |||
</button> | |||
</div> | |||
</div> | |||
@@ -154,6 +152,9 @@ | |||
<script setup lang="ts"> | |||
import type { Job } from '~/data/jobs' | |||
import { locationMap, workTypeMap } from '~/data/jobs' | |||
import { useI18n } from 'vue-i18n' | |||
const { t } = useI18n() | |||
/** | |||
* 组件属性 | |||
@@ -186,7 +187,8 @@ const getLocationName = (location: number): string => { | |||
* @returns 工作类型 | |||
*/ | |||
const getWorkType = (webSite: number): string => { | |||
return workTypeMap[webSite] || '全职' | |||
// 假设 1 代表全职,其他值可以扩展 | |||
return workTypeMap[webSite] || t('careers.workType.fullTime') | |||
} | |||
/** | |||
@@ -305,17 +307,6 @@ const copyEmail = async () => { | |||
}, 2000) | |||
} | |||
} | |||
/** | |||
* 打开邮箱客户端 | |||
*/ | |||
const openEmailClient = () => { | |||
const subject = encodeURIComponent(`应聘申请 - ${props.job.name}`) | |||
const body = encodeURIComponent(`您好,我对贵公司的${props.job.name}职位很感兴趣,希望能够申请这个职位。\n\n职位ID: ${props.job.id}\n职位名称: ${props.job.name}\n\n请查收我的简历,期待您的回复。`) | |||
window.open(`mailto:${props.job.email}?subject=${subject}&body=${body}`) | |||
closeModal() | |||
} | |||
</script> | |||
<style scoped> |
@@ -16,6 +16,9 @@ export default { | |||
noResults: "No results found", | |||
searching: "Searching...", | |||
backToTop: "Back to Top", | |||
copy: "Copy", | |||
copied: "Copied", | |||
close: "Close", | |||
breadcrumb: { | |||
home: "Home", | |||
privacy: "Privacy Policy", | |||
@@ -288,13 +291,13 @@ export default { | |||
"Introduction to Hanye's company overview, business philosophy, and corporate information.", | |||
keywords: | |||
"Hanye, company overview, business philosophy, corporate information", | |||
overview: { | |||
companyName: "Company Name", | |||
location: "Location", | |||
tel: "Tel", | |||
email: "Email", | |||
businessHours: "Business Hours" | |||
}, | |||
overview: { | |||
companyName: "Company Name", | |||
location: "Location", | |||
tel: "Tel", | |||
email: "Email", | |||
businessHours: "Business Hours" | |||
}, | |||
companyInfo: { | |||
name: "Hanye", | |||
companyName: "Hanye", | |||
@@ -445,4 +448,61 @@ export default { | |||
submitSuccess: "Submitted successfully! We will get back to you soon.", | |||
submitError: "Failed to submit. Please try again later or contact us directly." | |||
}, | |||
careers: { | |||
title: "Careers", | |||
subtitle: "Join us to create the future of storage technology together. We are looking for passionate talents to drive technological innovation with us.", | |||
CompanyHistory: "Years of Corporate History", | |||
TeamMembers: "Team Members", | |||
ProductModel: "Product Model", | |||
technicalSupport: "Technical Support", | |||
keywords: "Hanye, Careers, Job Opportunities, Talent Recruitment, Technical Positions", | |||
sectionTitle: "Talent Recruitment", | |||
CurrentlyOpen: "Currently Open", | |||
Aposition: "positions", | |||
workType: { | |||
fullTime: "Full-time", | |||
partTime: "Part-time", | |||
internship: "Internship" | |||
}, | |||
culture: { | |||
sectionTitle: "Corporate Culture", | |||
title: "Our Values", | |||
innovation: { | |||
title: "Innovation-Driven", | |||
description: "Continuously innovate in technology, pursue excellence in product design and solutions, and advance storage technology." | |||
}, | |||
teamwork: { | |||
title: "Teamwork", | |||
description: "We advocate for open communication and win-win collaboration to create a positive and supportive team atmosphere." | |||
}, | |||
quality: { | |||
title: "Quality First", | |||
description: "We always adhere to high-quality standards to provide customers with reliable and stable products and services." | |||
}, | |||
growth: { | |||
title: "Mutual Growth", | |||
description: "We provide an excellent platform for career development, growing together with our employees to realize their personal value." | |||
} | |||
}, | |||
PositionCard: { | |||
job: "Job Responsibilities", | |||
CB: "Compensation & Benefits", | |||
workingHours: "Working Hours", | |||
update: "Updated", | |||
JobDetails: "View Job Details" | |||
}, | |||
jobs: { | |||
sectionTitle: "Job Listings", | |||
title: "Open Positions", | |||
description: "We are looking for talented individuals to join our team. Browse the positions below to find the right opportunity for you.", | |||
button: "Apply Now", | |||
noPositions: "No Open Positions Currently", | |||
checkLater: "Please check back later or contact us for the latest job information." | |||
}, | |||
cta: { | |||
title: "Didn't find a suitable position?", | |||
description: "We are always open to talented individuals. If you believe you are a good fit for our team, please feel free to contact us.", | |||
button: "Contact Us" | |||
} | |||
} | |||
}; |
@@ -16,6 +16,9 @@ export default { | |||
noResults: "関連する結果はありません", | |||
searching: "検索中...", | |||
backToTop: "トップに戻る", | |||
copy: "コピー", | |||
copied: "コピーしました", | |||
close: "閉じる", | |||
breadcrumb: { | |||
home: "ホーム", | |||
privacy: "プライバシーポリシー", | |||
@@ -436,4 +439,61 @@ export default { | |||
submitError: | |||
"送信に失敗しました。後ほど再試行するか、直接お問い合わせください。", | |||
}, | |||
careers: { | |||
title: "採用情報", | |||
subtitle: "私たちと共に、ストレージ技術の未来を創造しませんか。技術革新を推進するため、情熱ある人材を募集しています。", | |||
CompanyHistory: "年の企業沿革", | |||
TeamMembers: "チームメンバー", | |||
ProductModel: "製品モデル", | |||
technicalSupport: "技術サポート", | |||
keywords: "Hanye, 採用, 求人, 人材募集, 技術職", | |||
sectionTitle: "人材募集", | |||
CurrentlyOpen: "現在募集中", | |||
Aposition: "ポジション", | |||
workType: { | |||
fullTime: "フルタイム", | |||
partTime: "パートタイム", | |||
internship: "インターンシップ" | |||
}, | |||
culture: { | |||
sectionTitle: "企業文化", | |||
title: "私たちの価値観", | |||
innovation: { | |||
title: "イノベーション駆動", | |||
description: "継続的な技術革新、卓越した製品設計とソリューションの追求を通じて、ストレージ技術の発展を推進します。" | |||
}, | |||
teamwork: { | |||
title: "チームワーク", | |||
description: "オープンなコミュニケーションと協力的なウィンウィン関係を提唱し、ポジティブなチームの雰囲気を作り出します。" | |||
}, | |||
quality: { | |||
title: "品質第一", | |||
description: "常に高品質基準を堅持し、お客様に信頼性の高い安定した製品とサービスを提供します。" | |||
}, | |||
growth: { | |||
title: "共に成長", | |||
description: "良好なキャリア開発プラットフォームを提供し、従業員と共に成長し、個人の価値実現をサポートします。" | |||
} | |||
}, | |||
PositionCard: { | |||
job: "仕事内容", | |||
CB: "給与・福利厚生", | |||
workingHours: "勤務時間", | |||
update: "更新日", | |||
JobDetails: "求人詳細を見る" | |||
}, | |||
jobs: { | |||
sectionTitle: "募集職種一覧", | |||
title: "募集中の職種", | |||
description: "私たちは優秀な人材をチームに迎えることを楽しみにしています。以下の職種をご覧になり、あなたに合った機会を見つけてください。", | |||
button: "応募する", | |||
noPositions: "現在募集中の職種はありません", | |||
checkLater: "しばらくしてから再度ご確認いただくか、最新の求人情報についてお問い合わせください。" | |||
}, | |||
cta: { | |||
title: "希望の職種が見つからない場合", | |||
description: "私たちは常に優秀な人材を歓迎しています。私たちのチームに適していると思われる方は、お気軽にご連絡ください。", | |||
button: "お問い合わせ" | |||
} | |||
} | |||
}; |
@@ -16,6 +16,11 @@ export default { | |||
noResults: "没有找到相关结果", | |||
searching: "搜索中...", | |||
backToTop: "返回顶部", | |||
// --- 新增 --- | |||
copy: "复制", | |||
copied: "已复制", | |||
close: "关闭", | |||
// --- 新增结束 --- | |||
footer: { | |||
productsLinks: { | |||
personal: "个人产品", | |||
@@ -434,8 +439,21 @@ export default { | |||
careers: { | |||
title: "招聘信息", | |||
subtitle: "加入我们,共同创造存储技术的未来。我们寻找有激情的人才,与我们一起推动技术创新。", | |||
CompanyHistory:"年企业历程", | |||
TeamMembers:"团队成员", | |||
ProductModel:"产品型号", | |||
technicalSupport:"技术支持", | |||
keywords: "Hanye, 招聘, 工作机会, 人才招聘, 技术岗位", | |||
sectionTitle: "人才招聘", | |||
CurrentlyOpen:"当前开放", | |||
Aposition:"个职位", | |||
// --- 新增 --- | |||
workType: { | |||
fullTime: "全职", | |||
partTime: "兼职", | |||
internship: "实习", | |||
}, | |||
// --- 新增结束 --- | |||
culture: { | |||
sectionTitle: "企业文化", | |||
title: "我们的价值观", | |||
@@ -456,6 +474,13 @@ export default { | |||
description: "提供良好的职业发展平台,与员工共同成长,实现个人价值。" | |||
} | |||
}, | |||
PositionCard:{ | |||
job:"工作职责", | |||
CB:"薪资福利", | |||
workingHours:"工作时间", | |||
update:"更新", | |||
JobDetails:"查看职位详情", | |||
}, | |||
jobs: { | |||
sectionTitle: "职位列表", | |||
title: "开放职位", | |||
@@ -471,4 +496,4 @@ export default { | |||
} | |||
}, | |||
}; | |||
}; |
@@ -187,7 +187,6 @@ | |||
"/en/products/230.DDR3-UDIMM-8GB-1.5V", | |||
"/en/products/231.DDR3-SODIMM-8GB-1.35V", | |||
"/en/products/CR-201BK", | |||
"/en/products/DDR3-SODIMM-8GB-1.5V", | |||
"/en/products/HSE-M20GRC01", | |||
"/en/products/HSE-M40GRC01", | |||
"/en/products/HSE-M4IN1GRC01", |
@@ -1920,27 +1920,6 @@ | |||
"recommend": false, | |||
"recommendIndex": -1 | |||
}, | |||
{ | |||
"id": "DDR3-SODIMM-8GB-1.5V", | |||
"title": "DDR3-SODIMM-8GB-1.5V", | |||
"name": "DDR3-SODIMM-8GB-1.5V", | |||
"usage": [ | |||
"Memory Upgrade/Performance Enhancement" | |||
], | |||
"category": 3, | |||
"image": "/images/products/DDR/DDR3-SODIMM-8GB-1.5V/ddr3-sodimm-8gb-1.5v.webp", | |||
"description": "", | |||
"summary": "Easy to install, no computer skills required", | |||
"series": [ | |||
"DDR3" | |||
], | |||
"gallery": [], | |||
"capacities": [ | |||
"8GB" | |||
], | |||
"recommend": false, | |||
"recommendIndex": -1 | |||
}, | |||
{ | |||
"id": "HSE-M20GRC01", | |||
"title": "HSE-M20GRC01", |