Hanye官网
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

careers.vue 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <template>
  2. <div class="careers-page">
  3. <!-- 页面标题区域 -->
  4. <section class="hero-section">
  5. <div class="container mx-auto px-4 py-16 md:py-24">
  6. <div class="breadcrumb">
  7. <span class="text-gray-500">{{ $t('careers.breadcrumb.home') }} /</span>
  8. <span class="ml-2">{{ $t('careers.breadcrumb.current') }}</span>
  9. </div>
  10. <h1 class="text-4xl md:text-5xl font-bold mt-6 mb-4 text-center">{{ $t('careers.title') }}</h1>
  11. <p class="text-xl text-gray-600 text-center max-w-3xl mx-auto">{{ $t('careers.subtitle') }}</p>
  12. </div>
  13. </section>
  14. <!-- 企业文化区域 -->
  15. <section class="culture-section py-16 bg-gray-50">
  16. <div class="container mx-auto px-4">
  17. <h2 class="text-3xl font-bold mb-12 text-center">{{ $t('careers.culture.title') }}</h2>
  18. <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
  19. <!-- 创新 -->
  20. <div class="culture-card bg-white p-6 rounded-2xl shadow-sm hover:shadow-md transition-shadow">
  21. <div class="icon-container w-14 h-14 bg-blue-100 rounded-full flex items-center justify-center mb-4">
  22. <svg class="w-7 h-7 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  23. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>
  24. </svg>
  25. </div>
  26. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.culture.innovation.title') }}</h3>
  27. <p class="text-gray-600">{{ $t('careers.culture.innovation.description') }}</p>
  28. </div>
  29. <!-- 团队合作 -->
  30. <div class="culture-card bg-white p-6 rounded-2xl shadow-sm hover:shadow-md transition-shadow">
  31. <div class="icon-container w-14 h-14 bg-blue-100 rounded-full flex items-center justify-center mb-4">
  32. <svg class="w-7 h-7 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  33. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"></path>
  34. </svg>
  35. </div>
  36. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.culture.teamwork.title') }}</h3>
  37. <p class="text-gray-600">{{ $t('careers.culture.teamwork.description') }}</p>
  38. </div>
  39. <!-- 速度 -->
  40. <div class="culture-card bg-white p-6 rounded-2xl shadow-sm hover:shadow-md transition-shadow">
  41. <div class="icon-container w-14 h-14 bg-blue-100 rounded-full flex items-center justify-center mb-4">
  42. <svg class="w-7 h-7 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  43. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
  44. </svg>
  45. </div>
  46. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.culture.speed.title') }}</h3>
  47. <p class="text-gray-600">{{ $t('careers.culture.speed.description') }}</p>
  48. </div>
  49. <!-- 品质 -->
  50. <div class="culture-card bg-white p-6 rounded-2xl shadow-sm hover:shadow-md transition-shadow">
  51. <div class="icon-container w-14 h-14 bg-blue-100 rounded-full flex items-center justify-center mb-4">
  52. <svg class="w-7 h-7 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  53. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path>
  54. </svg>
  55. </div>
  56. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.culture.quality.title') }}</h3>
  57. <p class="text-gray-600">{{ $t('careers.culture.quality.description') }}</p>
  58. </div>
  59. </div>
  60. </div>
  61. </section>
  62. <!-- 职位列表区域 -->
  63. <section class="jobs-section py-16">
  64. <div class="container mx-auto px-4">
  65. <h2 class="text-3xl font-bold mb-8 text-center">{{ $t('careers.jobs.title') }}</h2>
  66. <!-- 职位卡片网格 -->
  67. <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
  68. <!-- 职位卡片 1 -->
  69. <div class="job-card bg-white rounded-2xl overflow-hidden shadow-sm hover:shadow-md transition-shadow border border-gray-100">
  70. <div class="p-6">
  71. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.jobs.design.title') }}</h3>
  72. <div class="flex items-center text-gray-500 text-sm mb-4">
  73. <span class="flex items-center mr-4">
  74. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  75. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path>
  76. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path>
  77. </svg>
  78. {{ $t('careers.jobs.location') }}
  79. </span>
  80. <span class="flex items-center">
  81. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  82. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
  83. </svg>
  84. {{ $t('careers.jobs.type') }}
  85. </span>
  86. </div>
  87. <p class="text-gray-600 mb-6">{{ $t('careers.jobs.design.description') }}</p>
  88. <div class="flex flex-wrap gap-2 mb-6">
  89. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.design') }}</span>
  90. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.graphic') }}</span>
  91. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.ecommerce') }}</span>
  92. </div>
  93. <button class="w-full py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center justify-center">
  94. {{ $t('careers.jobs.button') }}
  95. <svg class="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  96. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
  97. </svg>
  98. </button>
  99. </div>
  100. </div>
  101. <!-- 职位卡片 2-6 (重复结构) -->
  102. <div class="job-card bg-white rounded-2xl overflow-hidden shadow-sm hover:shadow-md transition-shadow border border-gray-100">
  103. <div class="p-6">
  104. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.jobs.design.title') }}</h3>
  105. <div class="flex items-center text-gray-500 text-sm mb-4">
  106. <span class="flex items-center mr-4">
  107. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  108. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path>
  109. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path>
  110. </svg>
  111. {{ $t('careers.jobs.location') }}
  112. </span>
  113. <span class="flex items-center">
  114. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  115. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
  116. </svg>
  117. {{ $t('careers.jobs.type') }}
  118. </span>
  119. </div>
  120. <p class="text-gray-600 mb-6">{{ $t('careers.jobs.design.description') }}</p>
  121. <div class="flex flex-wrap gap-2 mb-6">
  122. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.design') }}</span>
  123. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.graphic') }}</span>
  124. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.ecommerce') }}</span>
  125. </div>
  126. <button class="w-full py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center justify-center">
  127. {{ $t('careers.jobs.button') }}
  128. <svg class="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  129. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
  130. </svg>
  131. </button>
  132. </div>
  133. </div>
  134. <!-- 重复职位卡片 3-6 -->
  135. <div class="job-card bg-white rounded-2xl overflow-hidden shadow-sm hover:shadow-md transition-shadow border border-gray-100">
  136. <div class="p-6">
  137. <h3 class="text-xl font-semibold mb-2">{{ $t('careers.jobs.design.title') }}</h3>
  138. <div class="flex items-center text-gray-500 text-sm mb-4">
  139. <span class="flex items-center mr-4">
  140. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  141. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path>
  142. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path>
  143. </svg>
  144. {{ $t('careers.jobs.location') }}
  145. </span>
  146. <span class="flex items-center">
  147. <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  148. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
  149. </svg>
  150. {{ $t('careers.jobs.type') }}
  151. </span>
  152. </div>
  153. <p class="text-gray-600 mb-6">{{ $t('careers.jobs.design.description') }}</p>
  154. <div class="flex flex-wrap gap-2 mb-6">
  155. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.design') }}</span>
  156. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.graphic') }}</span>
  157. <span class="px-3 py-1 bg-blue-50 text-blue-600 text-xs rounded-full">{{ $t('careers.jobs.tags.ecommerce') }}</span>
  158. </div>
  159. <button class="w-full py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center justify-center">
  160. {{ $t('careers.jobs.button') }}
  161. <svg class="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  162. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
  163. </svg>
  164. </button>
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. </section>
  170. <!-- 底部CTA区域 -->
  171. <section class="cta-section py-16 bg-blue-50">
  172. <div class="container mx-auto px-4 text-center">
  173. <h2 class="text-2xl md:text-3xl font-bold mb-4">{{ $t('careers.cta.title') }}</h2>
  174. <p class="text-gray-600 max-w-2xl mx-auto mb-8">{{ $t('careers.cta.description') }}</p>
  175. <button class="py-3 px-8 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors inline-flex items-center">
  176. {{ $t('careers.cta.button') }}
  177. <svg class="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  178. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
  179. </svg>
  180. </button>
  181. </div>
  182. </section>
  183. </div>
  184. </template>
  185. <script setup>
  186. import { useI18n } from 'vue-i18n'
  187. import { ref, onMounted } from 'vue'
  188. const { t } = useI18n()
  189. // 模拟职位数据
  190. const jobs = ref([
  191. {
  192. id: 1,
  193. title: t('careers.jobs.design.title'),
  194. location: t('careers.jobs.location'),
  195. type: t('careers.jobs.type'),
  196. description: t('careers.jobs.design.description'),
  197. tags: [t('careers.jobs.tags.design'), t('careers.jobs.tags.graphic'), t('careers.jobs.tags.ecommerce')]
  198. },
  199. // 更多职位数据...
  200. ])
  201. onMounted(() => {
  202. // 页面加载时的动画或交互效果
  203. document.querySelectorAll('.culture-card, .job-card').forEach((el, index) => {
  204. setTimeout(() => {
  205. el.style.opacity = '1'
  206. el.style.transform = 'translateY(0)'
  207. }, 100 * index)
  208. })
  209. })
  210. </script>
  211. <style scoped>
  212. .careers-page {
  213. scroll-behavior: smooth;
  214. }
  215. .hero-section {
  216. background-color: #f9fafb;
  217. }
  218. .breadcrumb {
  219. font-size: 0.9rem;
  220. color: #6b7280;
  221. margin-bottom: 1rem;
  222. text-align: center;
  223. }
  224. .culture-card,
  225. .job-card {
  226. opacity: 0;
  227. transform: translateY(20px);
  228. transition: opacity 0.5s ease, transform 0.5s ease, box-shadow 0.3s ease;
  229. }
  230. .icon-container {
  231. transition: background-color 0.3s ease;
  232. }
  233. .culture-card:hover .icon-container {
  234. background-color: #3b82f6;
  235. }
  236. .culture-card:hover .icon-container svg {
  237. color: white;
  238. }
  239. .cta-section {
  240. margin-top: 2rem;
  241. border-radius: 1rem;
  242. margin-left: 1rem;
  243. margin-right: 1rem;
  244. }
  245. @media (max-width: 768px) {
  246. .hero-section h1 {
  247. font-size: 2.5rem;
  248. }
  249. .culture-section, .jobs-section, .cta-section {
  250. padding: 2rem 1rem;
  251. }
  252. }
  253. </style>