Hanye官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968
  1. <template>
  2. <div>
  3. <div class="w-full h-[55px] sm:h-[72px]"></div>
  4. <ErrorBoundary :error="error">
  5. <div v-if="isLoading" class="flex justify-center py-16">
  6. <div
  7. class="animate-spin h-8 w-8 border-2 border-cyan-400 border-t-transparent rounded-full"
  8. ></div>
  9. </div>
  10. <div v-else>
  11. <!-- 面包屑导航 -->
  12. <div class="max-w-full xl:px-8 lg:px-6 md:px-4 px-4 mt-6 mb-8">
  13. <div class="max-w-screen-2xl mx-auto">
  14. <nuxt-link
  15. :to="`${homepagePath}/`"
  16. class="text-white/60 text-base font-normal hover:text-white transition-colors duration-300"
  17. >
  18. {{ t("common.home") }}
  19. </nuxt-link>
  20. <span class="text-white/60 text-base font-normal px-2"> / </span>
  21. <nuxt-link
  22. :to="`${homepagePath}/support`"
  23. class="text-white text-base font-normal"
  24. >
  25. {{ t("support.title") }}
  26. </nuxt-link>
  27. </div>
  28. </div>
  29. <!-- 页面头部 -->
  30. <div class="max-w-full mb-16 xl:px-8 lg:px-6 md:px-4 px-4">
  31. <div class="max-w-screen-2xl mx-auto">
  32. <div class="text-center mb-8">
  33. <div
  34. class="inline-flex items-center px-4 py-2 bg-cyan-400/10 border border-cyan-400/30 rounded-full mb-6"
  35. >
  36. <svg
  37. class="w-5 h-5 text-cyan-400 mr-2"
  38. fill="none"
  39. stroke="currentColor"
  40. viewBox="0 0 24 24"
  41. >
  42. <path
  43. stroke-linecap="round"
  44. stroke-linejoin="round"
  45. stroke-width="2"
  46. d="M18.364 5.636l-3.536 3.536m0 5.656l3.536 3.536M9.172 9.172L5.636 5.636m3.536 9.192L5.636 18.364M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-5 0a4 4 0 11-8 0 4 4 0 018 0z"
  47. ></path>
  48. </svg>
  49. <span class="text-cyan-400 font-medium text-sm"
  50. >TECHNICAL SUPPORT</span
  51. >
  52. </div>
  53. <h1 class="text-4xl md:text-5xl font-bold text-white mb-6">
  54. {{ t("support.title") }}
  55. </h1>
  56. <p
  57. class="text-xl text-gray-300 max-w-4xl mx-auto leading-relaxed"
  58. >
  59. {{ t("support.subtitle") }}
  60. </p>
  61. </div>
  62. <!-- 服务统计 -->
  63. <div class="grid grid-cols-2 md:grid-cols-4 gap-6 mt-12">
  64. <div class="text-center">
  65. <div class="text-3xl font-bold text-cyan-400 mb-2">24/7</div>
  66. <div class="text-sm text-gray-400">{{ t("support.stats.support247") }}</div>
  67. </div>
  68. <div class="text-center">
  69. <div class="text-3xl font-bold text-cyan-400 mb-2">&lt; 2H</div>
  70. <div class="text-sm text-gray-400">{{ t("support.stats.responseTime") }}</div>
  71. </div>
  72. <div class="text-center">
  73. <div class="text-3xl font-bold text-cyan-400 mb-2">95%</div>
  74. <div class="text-sm text-gray-400">{{ t("support.stats.resolutionRate") }}</div>
  75. </div>
  76. <div class="text-center">
  77. <div class="text-3xl font-bold text-cyan-400 mb-2">3+</div>
  78. <div class="text-sm text-gray-400">{{ t("support.stats.languageSupport") }}</div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. <!-- 主要支持服务 -->
  84. <div class="max-w-full mb-20 xl:px-8 lg:px-6 md:px-4 px-4">
  85. <div class="max-w-screen-2xl mx-auto">
  86. <div class="text-center mb-12">
  87. <h2 class="text-2xl md:text-3xl font-bold text-white mb-4">
  88. {{ t("support.services.mainTitle") }}
  89. </h2>
  90. <div class="w-24 h-1 bg-cyan-400 mx-auto"></div>
  91. </div>
  92. <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
  93. <!-- 常见问题解答 -->
  94. <div
  95. class="bg-gradient-to-br from-zinc-900 to-zinc-800/80 border border-zinc-700 rounded-xl p-8 relative overflow-hidden"
  96. >
  97. <div
  98. class="absolute top-0 right-0 w-32 h-32 bg-cyan-400/5 rounded-full -translate-y-16 translate-x-16"
  99. ></div>
  100. <div class="relative z-10">
  101. <div class="flex items-start justify-between mb-6">
  102. <div class="flex items-center">
  103. <div
  104. class="w-12 h-12 bg-cyan-400/20 rounded-xl flex items-center justify-center mr-4"
  105. >
  106. <svg
  107. class="w-6 h-6 text-cyan-400"
  108. fill="none"
  109. stroke="currentColor"
  110. viewBox="0 0 24 24"
  111. >
  112. <path
  113. stroke-linecap="round"
  114. stroke-linejoin="round"
  115. stroke-width="2"
  116. d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
  117. ></path>
  118. </svg>
  119. </div>
  120. <div>
  121. <h3 class="text-xl font-semibold text-white">
  122. {{ t("support.faq.title") }}
  123. </h3>
  124. <div class="text-sm text-cyan-400 font-medium mt-1">
  125. {{ t("support.services.faqRecommended") }}
  126. </div>
  127. </div>
  128. </div>
  129. <span
  130. class="px-3 py-1 bg-cyan-400/20 text-cyan-400 text-xs font-medium rounded-full"
  131. >FREE</span
  132. >
  133. </div>
  134. <p class="text-gray-300 mb-6 leading-relaxed">
  135. {{ t("support.faq.description") }}
  136. </p>
  137. <div class="space-y-3 mb-8">
  138. <div class="flex items-center text-sm text-gray-400">
  139. <svg
  140. class="w-4 h-4 text-green-400 mr-3"
  141. fill="none"
  142. stroke="currentColor"
  143. viewBox="0 0 24 24"
  144. >
  145. <path
  146. stroke-linecap="round"
  147. stroke-linejoin="round"
  148. stroke-width="2"
  149. d="M5 13l4 4L19 7"
  150. ></path>
  151. </svg>
  152. {{ t("support.services.faqFeatures.coverage") }}
  153. </div>
  154. <div class="flex items-center text-sm text-gray-400">
  155. <svg
  156. class="w-4 h-4 text-green-400 mr-3"
  157. fill="none"
  158. stroke="currentColor"
  159. viewBox="0 0 24 24"
  160. >
  161. <path
  162. stroke-linecap="round"
  163. stroke-linejoin="round"
  164. stroke-width="2"
  165. d="M5 13l4 4L19 7"
  166. ></path>
  167. </svg>
  168. {{ t("support.services.faqFeatures.search") }}
  169. </div>
  170. <div class="flex items-center text-sm text-gray-400">
  171. <svg
  172. class="w-4 h-4 text-green-400 mr-3"
  173. fill="none"
  174. stroke="currentColor"
  175. viewBox="0 0 24 24"
  176. >
  177. <path
  178. stroke-linecap="round"
  179. stroke-linejoin="round"
  180. stroke-width="2"
  181. d="M5 13l4 4L19 7"
  182. ></path>
  183. </svg>
  184. {{ t("support.services.faqFeatures.maintenance") }}
  185. </div>
  186. </div>
  187. <nuxt-link
  188. :to="`${homepagePath}/support/faq`"
  189. class="inline-flex items-center px-6 py-3 bg-cyan-400 text-zinc-900 font-medium rounded-lg hover:bg-cyan-500 transition-colors duration-200"
  190. >
  191. {{ t("support.services.viewFaq") }}
  192. <svg
  193. class="w-4 h-4 ml-2"
  194. fill="none"
  195. stroke="currentColor"
  196. viewBox="0 0 24 24"
  197. >
  198. <path
  199. stroke-linecap="round"
  200. stroke-linejoin="round"
  201. stroke-width="2"
  202. d="M9 5l7 7-7 7"
  203. ></path>
  204. </svg>
  205. </nuxt-link>
  206. </div>
  207. </div>
  208. <!-- 技术支持联系 -->
  209. <div
  210. class="bg-gradient-to-br from-zinc-900 to-zinc-800/80 border border-zinc-700 rounded-xl p-8 relative overflow-hidden"
  211. >
  212. <div
  213. class="absolute top-0 right-0 w-32 h-32 bg-cyan-400/5 rounded-full -translate-y-16 translate-x-16"
  214. ></div>
  215. <div class="relative z-10">
  216. <div class="flex items-start justify-between mb-6">
  217. <div class="flex items-center">
  218. <div
  219. class="w-12 h-12 bg-cyan-400/20 rounded-xl flex items-center justify-center mr-4"
  220. >
  221. <svg
  222. class="w-6 h-6 text-cyan-400"
  223. fill="none"
  224. stroke="currentColor"
  225. viewBox="0 0 24 24"
  226. >
  227. <path
  228. stroke-linecap="round"
  229. stroke-linejoin="round"
  230. stroke-width="2"
  231. d="M3 8l7.89 4.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"
  232. ></path>
  233. </svg>
  234. </div>
  235. <div>
  236. <h3 class="text-xl font-semibold text-white">
  237. {{ t("support.contact.title") }}
  238. </h3>
  239. <div class="text-sm text-cyan-400 font-medium mt-1">
  240. {{ t("support.services.contactPriority") }}
  241. </div>
  242. </div>
  243. </div>
  244. <span
  245. class="px-3 py-1 bg-orange-400/20 text-orange-400 text-xs font-medium rounded-full"
  246. >PRIORITY</span
  247. >
  248. </div>
  249. <p class="text-gray-300 mb-6 leading-relaxed">
  250. {{ t("support.contact.description") }}
  251. </p>
  252. <div class="space-y-3 mb-8">
  253. <div class="flex items-center text-sm text-gray-400">
  254. <svg
  255. class="w-4 h-4 text-green-400 mr-3"
  256. fill="none"
  257. stroke="currentColor"
  258. viewBox="0 0 24 24"
  259. >
  260. <path
  261. stroke-linecap="round"
  262. stroke-linejoin="round"
  263. stroke-width="2"
  264. d="M5 13l4 4L19 7"
  265. ></path>
  266. </svg>
  267. {{ t("support.services.contactFeatures.engineer") }}
  268. </div>
  269. <div class="flex items-center text-sm text-gray-400">
  270. <svg
  271. class="w-4 h-4 text-green-400 mr-3"
  272. fill="none"
  273. stroke="currentColor"
  274. viewBox="0 0 24 24"
  275. >
  276. <path
  277. stroke-linecap="round"
  278. stroke-linejoin="round"
  279. stroke-width="2"
  280. d="M5 13l4 4L19 7"
  281. ></path>
  282. </svg>
  283. {{ t("support.services.contactFeatures.response") }}
  284. </div>
  285. <div class="flex items-center text-sm text-gray-400">
  286. <svg
  287. class="w-4 h-4 text-green-400 mr-3"
  288. fill="none"
  289. stroke="currentColor"
  290. viewBox="0 0 24 24"
  291. >
  292. <path
  293. stroke-linecap="round"
  294. stroke-linejoin="round"
  295. stroke-width="2"
  296. d="M5 13l4 4L19 7"
  297. ></path>
  298. </svg>
  299. {{ t("support.services.contactFeatures.solution") }}
  300. </div>
  301. </div>
  302. <nuxt-link
  303. :to="`${homepagePath}/contact`"
  304. class="inline-flex items-center px-6 py-3 bg-zinc-800 border border-zinc-600 text-white font-medium rounded-lg hover:bg-zinc-700 hover:border-cyan-400/40 transition-all duration-200"
  305. >
  306. {{ t("support.services.contactSupport") }}
  307. <svg
  308. class="w-4 h-4 ml-2"
  309. fill="none"
  310. stroke="currentColor"
  311. viewBox="0 0 24 24"
  312. >
  313. <path
  314. stroke-linecap="round"
  315. stroke-linejoin="round"
  316. stroke-width="2"
  317. d="M9 5l7 7-7 7"
  318. ></path>
  319. </svg>
  320. </nuxt-link>
  321. </div>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. <!-- 扩展服务 -->
  327. <div class="max-w-full mb-20 xl:px-8 lg:px-6 md:px-4 px-4">
  328. <div class="max-w-screen-2xl mx-auto">
  329. <div class="text-center mb-12">
  330. <h2 class="text-2xl md:text-3xl font-bold text-white mb-4">
  331. {{ t("support.services.extendedTitle") }}
  332. </h2>
  333. <div class="w-24 h-1 bg-cyan-400 mx-auto"></div>
  334. <p class="text-gray-400 mt-4">{{ t("support.services.extendedSubtitle") }}</p>
  335. </div>
  336. <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
  337. <!-- 产品手册 -->
  338. <div
  339. class="bg-zinc-900 border border-zinc-700 rounded-lg p-6 text-center hover:border-cyan-400/30 transition-all duration-300 cursor-pointer group"
  340. @click="showManualsModal = true"
  341. >
  342. <div
  343. class="w-16 h-16 bg-zinc-800 rounded-lg flex items-center justify-center mx-auto mb-4 group-hover:bg-cyan-400/10 transition-colors duration-300"
  344. >
  345. <svg
  346. class="w-8 h-8 text-zinc-400 group-hover:text-cyan-400 transition-colors duration-300"
  347. fill="none"
  348. stroke="currentColor"
  349. viewBox="0 0 24 24"
  350. >
  351. <path
  352. stroke-linecap="round"
  353. stroke-linejoin="round"
  354. stroke-width="2"
  355. 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"
  356. ></path>
  357. </svg>
  358. </div>
  359. <h3 class="text-lg font-semibold text-white mb-3">
  360. {{ t("support.manuals.title") }}
  361. </h3>
  362. <p class="text-gray-400 text-sm mb-4 leading-relaxed">
  363. {{ t("support.manuals.description") }}
  364. </p>
  365. <span
  366. class="inline-flex items-center px-3 py-1 bg-zinc-800 text-gray-400 text-xs font-medium rounded-full"
  367. >
  368. {{ t("support.comingSoon") }}
  369. </span>
  370. </div>
  371. <!-- 技术文档 -->
  372. <div
  373. class="bg-zinc-900 border border-zinc-700 rounded-lg p-6 text-center hover:border-cyan-400/30 transition-all duration-300 cursor-pointer group"
  374. @click="showDocsModal = true"
  375. >
  376. <div
  377. class="w-16 h-16 bg-zinc-800 rounded-lg flex items-center justify-center mx-auto mb-4 group-hover:bg-cyan-400/10 transition-colors duration-300"
  378. >
  379. <svg
  380. class="w-8 h-8 text-zinc-400 group-hover:text-cyan-400 transition-colors duration-300"
  381. fill="none"
  382. stroke="currentColor"
  383. viewBox="0 0 24 24"
  384. >
  385. <path
  386. stroke-linecap="round"
  387. stroke-linejoin="round"
  388. stroke-width="2"
  389. 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.246 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"
  390. ></path>
  391. </svg>
  392. </div>
  393. <h3 class="text-lg font-semibold text-white mb-3">
  394. {{ t("support.docs.title") }}
  395. </h3>
  396. <p class="text-gray-400 text-sm mb-4 leading-relaxed">
  397. {{ t("support.docs.description") }}
  398. </p>
  399. <span
  400. class="inline-flex items-center px-3 py-1 bg-zinc-800 text-gray-400 text-xs font-medium rounded-full"
  401. >
  402. {{ t("support.comingSoon") }}
  403. </span>
  404. </div>
  405. <!-- 驱动下载 -->
  406. <div
  407. class="bg-zinc-900 border border-zinc-700 rounded-lg p-6 text-center hover:border-cyan-400/30 transition-all duration-300 cursor-pointer group"
  408. @click="showDriversModal = true"
  409. >
  410. <div
  411. class="w-16 h-16 bg-zinc-800 rounded-lg flex items-center justify-center mx-auto mb-4 group-hover:bg-cyan-400/10 transition-colors duration-300"
  412. >
  413. <svg
  414. class="w-8 h-8 text-zinc-400 group-hover:text-cyan-400 transition-colors duration-300"
  415. fill="none"
  416. stroke="currentColor"
  417. viewBox="0 0 24 24"
  418. >
  419. <path
  420. stroke-linecap="round"
  421. stroke-linejoin="round"
  422. stroke-width="2"
  423. d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"
  424. ></path>
  425. </svg>
  426. </div>
  427. <h3 class="text-lg font-semibold text-white mb-3">
  428. {{ t("support.drivers.title") }}
  429. </h3>
  430. <p class="text-gray-400 text-sm mb-4 leading-relaxed">
  431. {{ t("support.drivers.description") }}
  432. </p>
  433. <span
  434. class="inline-flex items-center px-3 py-1 bg-zinc-800 text-gray-400 text-xs font-medium rounded-full"
  435. >
  436. {{ t("support.comingSoon") }}
  437. </span>
  438. </div>
  439. <!-- 在线客服 -->
  440. <div
  441. class="bg-zinc-900 border border-zinc-700 rounded-lg p-6 text-center hover:border-cyan-400/30 transition-all duration-300 cursor-pointer group"
  442. @click="showChatModal = true"
  443. >
  444. <div
  445. class="w-16 h-16 bg-zinc-800 rounded-lg flex items-center justify-center mx-auto mb-4 group-hover:bg-cyan-400/10 transition-colors duration-300"
  446. >
  447. <svg
  448. class="w-8 h-8 text-zinc-400 group-hover:text-cyan-400 transition-colors duration-300"
  449. fill="none"
  450. stroke="currentColor"
  451. viewBox="0 0 24 24"
  452. >
  453. <path
  454. stroke-linecap="round"
  455. stroke-linejoin="round"
  456. stroke-width="2"
  457. d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"
  458. ></path>
  459. </svg>
  460. </div>
  461. <h3 class="text-lg font-semibold text-white mb-3">
  462. {{ t("support.chat.title") }}
  463. </h3>
  464. <p class="text-gray-400 text-sm mb-4 leading-relaxed">
  465. {{ t("support.chat.description") }}
  466. </p>
  467. <span
  468. class="inline-flex items-center px-3 py-1 bg-zinc-800 text-gray-400 text-xs font-medium rounded-full"
  469. >
  470. {{ t("support.comingSoon") }}
  471. </span>
  472. </div>
  473. </div>
  474. </div>
  475. </div>
  476. <!-- 联系信息区域 -->
  477. <div class="max-w-full xl:px-8 lg:px-6 md:px-4 px-4 mb-16">
  478. <div class="max-w-screen-2xl mx-auto">
  479. <div
  480. class="bg-gradient-to-r from-zinc-900 via-zinc-800/90 to-zinc-900 border border-zinc-700 rounded-xl p-8 md:p-12 text-center relative overflow-hidden"
  481. >
  482. <div class="absolute inset-0 bg-grid-pattern opacity-5"></div>
  483. <div class="relative z-10">
  484. <h2 class="text-2xl md:text-3xl font-bold text-white mb-4">
  485. {{ t("support.team.title") }}
  486. </h2>
  487. <p
  488. class="text-gray-300 mb-8 max-w-3xl mx-auto text-lg leading-relaxed"
  489. >
  490. {{ t("support.team.description") }}
  491. </p>
  492. <div class="grid grid-cols-1 md:grid-cols-3 gap-8 mb-10">
  493. <div class="text-center">
  494. <div
  495. class="w-12 h-12 bg-cyan-400/20 rounded-lg flex items-center justify-center mx-auto mb-3"
  496. >
  497. <svg
  498. class="w-6 h-6 text-cyan-400"
  499. fill="none"
  500. stroke="currentColor"
  501. viewBox="0 0 24 24"
  502. >
  503. <path
  504. stroke-linecap="round"
  505. stroke-linejoin="round"
  506. stroke-width="2"
  507. d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
  508. ></path>
  509. </svg>
  510. </div>
  511. <h3 class="font-semibold text-white mb-2">{{ t("support.team.fastResponse.title") }}</h3>
  512. <p class="text-gray-400 text-sm">{{ t("support.team.fastResponse.description") }}</p>
  513. </div>
  514. <div class="text-center">
  515. <div
  516. class="w-12 h-12 bg-cyan-400/20 rounded-lg flex items-center justify-center mx-auto mb-3"
  517. >
  518. <svg
  519. class="w-6 h-6 text-cyan-400"
  520. fill="none"
  521. stroke="currentColor"
  522. viewBox="0 0 24 24"
  523. >
  524. <path
  525. stroke-linecap="round"
  526. stroke-linejoin="round"
  527. stroke-width="2"
  528. d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
  529. ></path>
  530. </svg>
  531. </div>
  532. <h3 class="font-semibold text-white mb-2">{{ t("support.team.professional.title") }}</h3>
  533. <p class="text-gray-400 text-sm">{{ t("support.team.professional.description") }}</p>
  534. </div>
  535. <div class="text-center">
  536. <div
  537. class="w-12 h-12 bg-cyan-400/20 rounded-lg flex items-center justify-center mx-auto mb-3"
  538. >
  539. <svg
  540. class="w-6 h-6 text-cyan-400"
  541. fill="none"
  542. stroke="currentColor"
  543. viewBox="0 0 24 24"
  544. >
  545. <path
  546. stroke-linecap="round"
  547. stroke-linejoin="round"
  548. stroke-width="2"
  549. d="M13 10V3L4 14h7v7l9-11h-7z"
  550. ></path>
  551. </svg>
  552. </div>
  553. <h3 class="font-semibold text-white mb-2">{{ t("support.team.efficient.title") }}</h3>
  554. <p class="text-gray-400 text-sm">{{ t("support.team.efficient.description") }}</p>
  555. </div>
  556. </div>
  557. <div class="flex flex-col sm:flex-row gap-4 justify-center">
  558. <nuxt-link
  559. :to="`${homepagePath}/contact`"
  560. class="inline-flex items-center px-8 py-4 bg-cyan-400 text-zinc-900 font-semibold rounded-lg hover:bg-cyan-500 transition-colors duration-200"
  561. >
  562. <svg
  563. class="w-5 h-5 mr-2"
  564. fill="none"
  565. stroke="currentColor"
  566. viewBox="0 0 24 24"
  567. >
  568. <path
  569. stroke-linecap="round"
  570. stroke-linejoin="round"
  571. stroke-width="2"
  572. d="M3 8l7.89 4.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"
  573. ></path>
  574. </svg>
  575. {{ t("support.services.contactSupport") }}
  576. </nuxt-link>
  577. <nuxt-link
  578. :to="`${homepagePath}/support/faq`"
  579. class="inline-flex items-center px-8 py-4 border border-zinc-600 text-white font-semibold rounded-lg hover:bg-zinc-800 hover:border-cyan-400/40 transition-all duration-200"
  580. >
  581. <svg
  582. class="w-5 h-5 mr-2"
  583. fill="none"
  584. stroke="currentColor"
  585. viewBox="0 0 24 24"
  586. >
  587. <path
  588. stroke-linecap="round"
  589. stroke-linejoin="round"
  590. stroke-width="2"
  591. d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
  592. ></path>
  593. </svg>
  594. {{ t("support.team.viewFaq") }}
  595. </nuxt-link>
  596. </div>
  597. </div>
  598. </div>
  599. </div>
  600. </div>
  601. <!-- 保持原有的模态框 -->
  602. <div
  603. v-if="showDocsModal"
  604. class="fixed inset-0 bg-black bg-opacity-75 z-50 flex items-center justify-center p-4"
  605. @click="showDocsModal = false"
  606. >
  607. <div
  608. class="bg-zinc-800 rounded-lg max-w-md w-full shadow-2xl border border-zinc-700"
  609. @click.stop
  610. >
  611. <div
  612. class="flex items-center justify-between p-6 border-b border-zinc-700"
  613. >
  614. <h2 class="text-xl font-semibold text-white">
  615. {{ t("support.docs.title") }}
  616. </h2>
  617. <button
  618. @click="showDocsModal = false"
  619. class="text-gray-400 hover:text-gray-200 transition-colors"
  620. >
  621. <svg
  622. class="w-6 h-6"
  623. fill="none"
  624. stroke="currentColor"
  625. viewBox="0 0 24 24"
  626. >
  627. <path
  628. stroke-linecap="round"
  629. stroke-linejoin="round"
  630. stroke-width="2"
  631. d="M6 18L18 6M6 6l12 12"
  632. ></path>
  633. </svg>
  634. </button>
  635. </div>
  636. <div class="p-6 text-center">
  637. <div
  638. class="w-16 h-16 bg-cyan-400/20 text-cyan-400 rounded-full flex items-center justify-center mx-auto mb-4"
  639. >
  640. <svg
  641. class="w-8 h-8"
  642. fill="none"
  643. stroke="currentColor"
  644. viewBox="0 0 24 24"
  645. >
  646. <path
  647. stroke-linecap="round"
  648. stroke-linejoin="round"
  649. stroke-width="2"
  650. d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
  651. ></path>
  652. </svg>
  653. </div>
  654. <h3 class="text-lg font-semibold text-white mb-2">
  655. {{ t("support.comingSoon") }}
  656. </h3>
  657. <p class="text-gray-400 text-sm">
  658. {{ locale === 'zh' ? '我们正在为您准备详细的技术文档,敬请期待' : locale === 'en' ? 'We are preparing detailed technical documentation for you, please stay tuned' : '詳細な技術ドキュメントを準備中です。お楽しみに' }}
  659. </p>
  660. </div>
  661. </div>
  662. </div>
  663. <div
  664. v-if="showManualsModal"
  665. class="fixed inset-0 bg-black bg-opacity-75 z-50 flex items-center justify-center p-4"
  666. @click="showManualsModal = false"
  667. >
  668. <div
  669. class="bg-zinc-800 rounded-lg max-w-md w-full shadow-2xl border border-zinc-700"
  670. @click.stop
  671. >
  672. <div
  673. class="flex items-center justify-between p-6 border-b border-zinc-700"
  674. >
  675. <h2 class="text-xl font-semibold text-white">
  676. {{ t("support.manuals.title") }}
  677. </h2>
  678. <button
  679. @click="showManualsModal = false"
  680. class="text-gray-400 hover:text-gray-200 transition-colors"
  681. >
  682. <svg
  683. class="w-6 h-6"
  684. fill="none"
  685. stroke="currentColor"
  686. viewBox="0 0 24 24"
  687. >
  688. <path
  689. stroke-linecap="round"
  690. stroke-linejoin="round"
  691. stroke-width="2"
  692. d="M6 18L18 6M6 6l12 12"
  693. ></path>
  694. </svg>
  695. </button>
  696. </div>
  697. <div class="p-6 text-center">
  698. <div
  699. class="w-16 h-16 bg-cyan-400/20 text-cyan-400 rounded-full flex items-center justify-center mx-auto mb-4"
  700. >
  701. <svg
  702. class="w-8 h-8"
  703. fill="none"
  704. stroke="currentColor"
  705. viewBox="0 0 24 24"
  706. >
  707. <path
  708. stroke-linecap="round"
  709. stroke-linejoin="round"
  710. stroke-width="2"
  711. d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
  712. ></path>
  713. </svg>
  714. </div>
  715. <h3 class="text-lg font-semibold text-white mb-2">
  716. {{ t("support.comingSoon") }}
  717. </h3>
  718. <p class="text-gray-400 text-sm">
  719. {{ locale === 'zh' ? '产品手册下载功能即将上线,敬请期待' : locale === 'en' ? 'Product manual download feature will be available soon, please stay tuned' : '製品マニュアルダウンロード機能が近日公開予定です。お楽しみに' }}
  720. </p>
  721. </div>
  722. </div>
  723. </div>
  724. <div
  725. v-if="showDriversModal"
  726. class="fixed inset-0 bg-black bg-opacity-75 z-50 flex items-center justify-center p-4"
  727. @click="showDriversModal = false"
  728. >
  729. <div
  730. class="bg-zinc-800 rounded-lg max-w-md w-full shadow-2xl border border-zinc-700"
  731. @click.stop
  732. >
  733. <div
  734. class="flex items-center justify-between p-6 border-b border-zinc-700"
  735. >
  736. <h2 class="text-xl font-semibold text-white">
  737. {{ t("support.drivers.title") }}
  738. </h2>
  739. <button
  740. @click="showDriversModal = false"
  741. class="text-gray-400 hover:text-gray-200 transition-colors"
  742. >
  743. <svg
  744. class="w-6 h-6"
  745. fill="none"
  746. stroke="currentColor"
  747. viewBox="0 0 24 24"
  748. >
  749. <path
  750. stroke-linecap="round"
  751. stroke-linejoin="round"
  752. stroke-width="2"
  753. d="M6 18L18 6M6 6l12 12"
  754. ></path>
  755. </svg>
  756. </button>
  757. </div>
  758. <div class="p-6 text-center">
  759. <div
  760. class="w-16 h-16 bg-cyan-400/20 text-cyan-400 rounded-full flex items-center justify-center mx-auto mb-4"
  761. >
  762. <svg
  763. class="w-8 h-8"
  764. fill="none"
  765. stroke="currentColor"
  766. viewBox="0 0 24 24"
  767. >
  768. <path
  769. stroke-linecap="round"
  770. stroke-linejoin="round"
  771. stroke-width="2"
  772. d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
  773. ></path>
  774. </svg>
  775. </div>
  776. <h3 class="text-lg font-semibold text-white mb-2">
  777. {{ t("support.comingSoon") }}
  778. </h3>
  779. <p class="text-gray-400 text-sm">
  780. {{ locale === 'zh' ? '驱动程序下载区域正在准备中,敬请期待' : locale === 'en' ? 'Driver download area is being prepared, please stay tuned' : 'ドライバーダウンロードエリアを準備中です。お楽しみに' }}
  781. </p>
  782. </div>
  783. </div>
  784. </div>
  785. <div
  786. v-if="showChatModal"
  787. class="fixed inset-0 bg-black bg-opacity-75 z-50 flex items-center justify-center p-4"
  788. @click="showChatModal = false"
  789. >
  790. <div
  791. class="bg-zinc-800 rounded-lg max-w-md w-full shadow-2xl border border-zinc-700"
  792. @click.stop
  793. >
  794. <div
  795. class="flex items-center justify-between p-6 border-b border-zinc-700"
  796. >
  797. <h2 class="text-xl font-semibold text-white">
  798. {{ t("support.chat.title") }}
  799. </h2>
  800. <button
  801. @click="showChatModal = false"
  802. class="text-gray-400 hover:text-gray-200 transition-colors"
  803. >
  804. <svg
  805. class="w-6 h-6"
  806. fill="none"
  807. stroke="currentColor"
  808. viewBox="0 0 24 24"
  809. >
  810. <path
  811. stroke-linecap="round"
  812. stroke-linejoin="round"
  813. stroke-width="2"
  814. d="M6 18L18 6M6 6l12 12"
  815. ></path>
  816. </svg>
  817. </button>
  818. </div>
  819. <div class="p-6 text-center">
  820. <div
  821. class="w-16 h-16 bg-cyan-400/20 text-cyan-400 rounded-full flex items-center justify-center mx-auto mb-4"
  822. >
  823. <svg
  824. class="w-8 h-8"
  825. fill="none"
  826. stroke="currentColor"
  827. viewBox="0 0 24 24"
  828. >
  829. <path
  830. stroke-linecap="round"
  831. stroke-linejoin="round"
  832. stroke-width="2"
  833. d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
  834. ></path>
  835. </svg>
  836. </div>
  837. <h3 class="text-lg font-semibold text-white mb-2">
  838. {{ t("support.comingSoon") }}
  839. </h3>
  840. <p class="text-gray-400 text-sm">
  841. {{ locale === 'zh' ? '在线客服功能即将为您开通,敬请期待' : locale === 'en' ? 'Live chat feature will be available soon, please stay tuned' : 'オンラインカスタマーサービス機能が近日開通予定です。お楽しみに' }}
  842. </p>
  843. </div>
  844. </div>
  845. </div>
  846. </div>
  847. </ErrorBoundary>
  848. </div>
  849. </template>
  850. <script setup lang="ts">
  851. /**
  852. * 技术支持页面
  853. * 提供专业的技术支持服务入口
  854. */
  855. import { useErrorHandler } from "~/composables/useErrorHandler";
  856. const { error, isLoading } = useErrorHandler();
  857. const { t, locale } = useI18n();
  858. // 计算首页路径
  859. const homepagePath = computed(() => {
  860. return locale.value === "zh" ? "" : `/${locale.value}`;
  861. });
  862. // 模态框控制
  863. const showDocsModal = ref(false);
  864. const showManualsModal = ref(false);
  865. const showDriversModal = ref(false);
  866. const showChatModal = ref(false);
  867. // SEO优化
  868. useHead({
  869. title: t("support.title") + " - Hanye",
  870. meta: [
  871. {
  872. name: "description",
  873. content: t("support.description"),
  874. },
  875. {
  876. name: "keywords",
  877. content: t("support.keywords"),
  878. },
  879. ],
  880. });
  881. </script>
  882. <style scoped>
  883. /* 简洁的悬停效果 */
  884. .group:hover {
  885. transform: translateY(-2px);
  886. }
  887. /* 按钮悬停效果 */
  888. .hover\:bg-blue-700:hover {
  889. background-color: #1d4ed8;
  890. }
  891. .hover\:bg-gray-600:hover {
  892. background-color: #4b5563;
  893. }
  894. /* 过渡效果 */
  895. .transition-all {
  896. transition-property: all;
  897. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  898. }
  899. .transition-colors {
  900. transition-property: color, background-color, border-color,
  901. text-decoration-color, fill, stroke;
  902. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  903. }
  904. .transition-transform {
  905. transition-property: transform;
  906. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  907. }
  908. .duration-200 {
  909. transition-duration: 200ms;
  910. }
  911. /* 专业的阴影效果 */
  912. .shadow-lg {
  913. box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
  914. 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  915. }
  916. .shadow-xl {
  917. box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
  918. 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  919. }
  920. .shadow-2xl {
  921. box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  922. }
  923. /* 响应式优化 */
  924. @media (max-width: 768px) {
  925. .group:hover {
  926. transform: none;
  927. }
  928. }
  929. </style>