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.

561 lines
20 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="footer">
  3. <v-card flat width="100%" color="transparent" :height="width > 960 ? '335' : 'auto'"
  4. class="d-flex align-center flex-column pt-14" style="background: #f8f8f8; font-size: 12px">
  5. <v-card flat color="transparent" class="d-none d-sm-flex flex-row justify-space-around"
  6. style="width: 100%; max-width: 1366px">
  7. <v-card flat color="transparent" class="hidden-sm-and-down">
  8. <v-img max-width="180px" max-height="127px" contain :src="require('@/assets/svg/logo_footer_v3.svg')"
  9. class="mx-auto my-auto"></v-img>
  10. </v-card>
  11. <v-card flat color="transparent" class="px-10">
  12. <v-card width="100%" height="100%" color="transparent" flat>
  13. <div v-for="i in showEasy.length" :key="i" width="100%" :class="i == 1 ? 'primary--text mb-3' : 'mb-2'"
  14. :style="i == 1 ? 'font-size: 14px' : ''">
  15. <nuxt-link v-if="
  16. showEasy[i - 1] === 'About Us' || showEasy[i - 1] === 'FAQ'
  17. " :to="localePath(showEasyPath[i - 1])" class="remove-underline">
  18. {{ $t(showEasy[i - 1]) }}
  19. </nuxt-link>
  20. <a v-else-if="showEasy[i - 1] === 'Recruitment'" :href="showEasyPath[i - 1]" class="remove-underline"
  21. target="_blank">
  22. {{ $t(showEasy[i - 1]) }}
  23. </a>
  24. <div v-else>
  25. {{ $t(showEasy[i - 1]) }}
  26. </div>
  27. </div>
  28. <!-- <nuxt-link
  29. v-for="i in showEasy.length"
  30. :key="i"
  31. :to="localePath(showEasyPath[i - 1])"
  32. class="remove-underline"
  33. >
  34. <div
  35. width="100%"
  36. :class="i == 1 ? 'primary--text mb-3' : 'mb-2'"
  37. :style="i == 1 ? 'font-size: 14px' : ''"
  38. >
  39. {{ $t(showEasy[i - 1]) }}
  40. </div>
  41. </nuxt-link> -->
  42. </v-card>
  43. </v-card>
  44. <v-card flat color="transparent" class="px-10">
  45. <v-card v-if="$i18n.locale == 'zh-tw'" width="100%" height="50%" color="transparent" flat>
  46. <div v-for="i in forExhibitorAndVIsitor.length" :key="i" width="100%"
  47. :class="i == 1 ? 'primary--text mb-3' : 'mb-2'" :style="i == 1 ? 'font-size: 14px' : ''">
  48. <!-- <nuxt-link v-if="forExhibitorAndVIsitor[i-1] !== 'Blog'" :to="localePath(forExhibitorAndVIsitorPath[i - 1])"
  49. class="remove-underline">
  50. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  51. </nuxt-link> -->
  52. <a v-if="forExhibitorAndVIsitor[i - 1] === 'Blog'" :href="forExhibitorAndVIsitorPath[i - 1]"
  53. class="remove-underline" target="_blank">
  54. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  55. </a>
  56. <div v-else>
  57. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  58. </div>
  59. </div>
  60. </v-card>
  61. <v-card v-else width="100%" height="50%" color="transparent" flat>
  62. <div v-for="i in forExhibitorAndVIsitor.length" :key="i" width="100%"
  63. :class="i == 1 ? 'primary--text mb-3' : 'mb-2'" :style="i == 1 ? 'font-size: 14px' : ''">
  64. <!-- <nuxt-link v-if="forExhibitorAndVIsitor[i-1] !== 'Blog'" :to="localePath(forExhibitorAndVIsitorPath[i - 1])"
  65. class="remove-underline">
  66. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  67. </nuxt-link> -->
  68. <a v-if="forExhibitorAndVIsitor[i - 1] === 'Blog'" :href="forExhibitorAndVIsitorPath_en[i - 1]"
  69. class="remove-underline" target="_blank">
  70. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  71. </a>
  72. <div v-else>
  73. {{ $t(forExhibitorAndVIsitor[i - 1]) }}
  74. </div>
  75. </div>
  76. </v-card>
  77. <div v-show="$i18n.locale == 'zh-tw'">
  78. <v-card width="100%" height="50%" color="transparent" flat :class="width > 960 ? '' : 'mt-10'">
  79. <div v-for="i in forPartner.length" :key="i" width="100%" :class="i == 1 ? 'primary--text mb-3' : 'mb-2'"
  80. :style="i == 1 ? 'font-size: 14px' : ''">
  81. <a v-if="forPartner[i - 1] === 'Become Partner'" :href="forPartnerPath[i - 1]" class="remove-underline"
  82. target="_blank">
  83. {{ $t(forPartner[i - 1]) }}
  84. </a>
  85. <div v-else>
  86. {{ $t(forPartner[i - 1]) }}
  87. </div>
  88. </div>
  89. </v-card>
  90. </div>
  91. </v-card>
  92. <v-card flat color="transparent">
  93. <v-card width="100%" height="50%" color="transparent" flat>
  94. <div width="100%" :class="i == 1 ? 'primary--text mb-3' : 'mb-2'" :style="i == 1 ? 'font-size: 14px' : ''"
  95. v-for="i in termsOfUse.length" :key="i">
  96. <span v-if="i === 1">{{ $t(termsOfUse[i - 1]) }}</span>
  97. <nuxt-link :to="localePath(termsOfUsePath[i - 1])" class="remove-underline" v-if="i > 1">
  98. {{ $t(termsOfUse[i - 1]) }}
  99. </nuxt-link>
  100. </div>
  101. </v-card>
  102. <v-card flat color="transparent" width="100%" height="50%" class="hidden-sm-and-down">
  103. <div width="100%" class="primary--text mb-3 mt-8" style="font-size: 14px; line-height: 30px">
  104. {{ $t("Follow Us") }}
  105. </div>
  106. <div>
  107. <div class="d-flex flex-row" v-if="$i18n.locale == 'zh-tw'">
  108. <a :href="FollowUsPath[i - 1]" v-for="i in FollowUsIcon.length" :key="i" style="margin: 0 10px 0 0"
  109. target="_blank">
  110. <v-img max-width="24" :src="require(`@/assets/svg/${FollowUsIcon[i - 1]}.svg`)"></v-img>
  111. </a>
  112. </div>
  113. <div v-else class="d-flex flex-row">
  114. <a :href="FollowUsPath_en[i - 1]" v-for="i in FollowUsIcon.length" :key="i" style="margin: 0 10px 0 0"
  115. target="_blank">
  116. <v-img max-width="24" :src="require(`@/assets/svg/${FollowUsIcon[i - 1]}.svg`)"></v-img>
  117. </a>
  118. </div>
  119. <!-- <nuxt-link
  120. :to="localePath(FollowUsPath[i - 1])"
  121. v-for="i in FollowUsIcon.length"
  122. :key="i"
  123. style="margin: 0 10px 0 0;"
  124. >
  125. <v-img
  126. max-width="24"
  127. :src="require(`@/assets/svg/${FollowUsIcon[i - 1]}.svg`)"
  128. ></v-img>
  129. </nuxt-link> -->
  130. </div>
  131. </v-card>
  132. <div width="100%" height="50%" class="hidden-md-and-up" :class="width > 960 ? '' : 'mt-10'">
  133. <div width="100%" class="primary--text mb-3" style="font-size: 14px">
  134. {{ $t("Contact Us") }}
  135. </div>
  136. <a :href="contactPath[i - 1]" class="remove-underline" v-for="i in contact.length" :key="i">
  137. <div class="d-flex flex-row mb-2">
  138. <v-img max-width="20" contain class="mr-3" :src="
  139. i == 1
  140. ? require('@/assets/svg/phone.svg')
  141. : require('@/assets/svg/envelop.svg')
  142. "></v-img>
  143. <div>{{ $t(contact[i - 1]) }}</div>
  144. </div>
  145. </a>
  146. </div>
  147. </v-card>
  148. <v-card flat color="transparent" cols="2" class="hidden-sm-and-down">
  149. <div width="100%" height="50%">
  150. <div width="100%" class="primary--text mb-3" style="font-size: 14px">
  151. {{ $t("Contact Us") }}
  152. </div>
  153. <a :href="contactPath[i - 1]" class="remove-underline" v-for="i in contact.length" :key="i">
  154. <div class="d-flex flex-row mb-1">
  155. <v-img max-width="20" contain class="mr-3" :src="
  156. i == 1
  157. ? require('@/assets/svg/phone.svg')
  158. : require('@/assets/svg/envelop.svg')
  159. "></v-img>
  160. <div>{{ $t(contact[i - 1]) }}</div>
  161. </div>
  162. </a>
  163. </div>
  164. </v-card>
  165. </v-card>
  166. <!-- phone menu -->
  167. <v-card width="100%" height="auto" flat color="transparent" class="hidden-sm-and-up">
  168. <v-expansion-panels accordion flat style="font-size: 12px">
  169. <v-expansion-panel v-for="i in titles.length" :key="i" style="background: #f8f8f8">
  170. <v-expansion-panel-header class="primary--text" expand-icon="mdi-plus">
  171. {{ $t(titles[i - 1]) }}
  172. </v-expansion-panel-header>
  173. <v-expansion-panel-content>
  174. <div v-if="$i18n.locale == 'zh-tw'">
  175. <template v-for="j in total[i - 1].length">
  176. <div :key="j" v-if="!!total[i - 1][j - 1]" class="my-2">
  177. <a class="remove-underline my-n2" v-if="
  178. total[i - 1][j - 1] === 'Recruitment' ||
  179. total[i - 1][j - 1] === 'Blog'
  180. " :href="totalPath[i - 1][j - 1]" target="_blank">
  181. {{ $t(total[i - 1][j - 1]) }}
  182. </a>
  183. <span class="my-n2" v-else-if="
  184. total[i - 1][j - 1] === 'Become Partner' ||
  185. total[i - 1][j - 1] === 'Partner Login' ||
  186. total[i - 1][j - 1] === 'ShowEasy Advantage' ||
  187. total[i - 1][j - 1] === 'Press' ||
  188. total[i - 1][j - 1] === 'News' ||
  189. total[i - 1][j - 1] === 'Our Partner'
  190. ">
  191. {{ $t(total[i - 1][j - 1]) }}
  192. </span>
  193. <nuxt-link v-else-if="i !== 4" :to="totalPath[i - 1][j - 1]" class="remove-underline my-n2">
  194. {{ $t(total[i - 1][j - 1]) }}
  195. </nuxt-link>
  196. <div width="100%" class="my-2 d-flex flex-row" v-if="i === 4">
  197. <v-img max-width="20" contain class="mr-3" :src="
  198. j == 1
  199. ? require('@/assets/svg/phone.svg')
  200. : require('@/assets/svg/envelop.svg')
  201. "></v-img>
  202. <div>
  203. <a class="remove-underline" :href="totalPath[i - 1][j - 1]">
  204. {{ $t(total[i - 1][j - 1]) }}
  205. </a>
  206. </div>
  207. </div>
  208. </div>
  209. </template>
  210. </div>
  211. <div v-else>
  212. <template v-for="j in total[i - 1].length">
  213. <div :key="j" v-if="!!total[i - 1][j - 1]" class="my-2">
  214. <a class="remove-underline my-n2" v-if="
  215. total[i - 1][j - 1] === 'Recruitment' ||
  216. total[i - 1][j - 1] === 'Blog'
  217. " :href="totalPath_en[i - 1][j - 1]" target="_blank">
  218. {{ $t(total[i - 1][j - 1]) }}
  219. </a>
  220. <span class="my-n2" v-else-if="
  221. total[i - 1][j - 1] === 'Become Partner' ||
  222. total[i - 1][j - 1] === 'Partner Login' ||
  223. total[i - 1][j - 1] === 'ShowEasy Advantage' ||
  224. total[i - 1][j - 1] === 'Press' ||
  225. total[i - 1][j - 1] === 'News' ||
  226. total[i - 1][j - 1] === 'Our Partner'
  227. ">
  228. {{ $t(total[i - 1][j - 1]) }}
  229. </span>
  230. <nuxt-link v-else-if="i !== 4" :to="totalPath[i - 1][j - 1]" class="remove-underline my-n2">
  231. {{ $t(total[i - 1][j - 1]) }}
  232. </nuxt-link>
  233. <div width="100%" class="my-2 d-flex flex-row" v-if="i === 4">
  234. <v-img max-width="20" contain class="mr-3" :src="
  235. j == 1
  236. ? require('@/assets/svg/phone.svg')
  237. : require('@/assets/svg/envelop.svg')
  238. "></v-img>
  239. <div>
  240. <a class="remove-underline" :href="totalPath[i - 1][j - 1]">
  241. {{ $t(total[i - 1][j - 1]) }}
  242. </a>
  243. </div>
  244. </div>
  245. </div>
  246. </template>
  247. </div>
  248. <!-- <nuxt-link
  249. v-for="j in total[i - 1].length"
  250. :key="j"
  251. :to="localePath(totalPath[i - 1][j - 1])"
  252. class="remove-underline"
  253. v-if="!!total[i - 1][j - 1]"
  254. >
  255. <div width="100%" class="my-2 d-flex flex-row">
  256. <v-img
  257. max-width="20"
  258. contain
  259. class="mr-3"
  260. v-if="i == 5"
  261. :src="
  262. j == 1
  263. ? require('@/assets/svg/phone.svg')
  264. : require('@/assets/svg/envelop.svg')
  265. "
  266. ></v-img>
  267. <div>
  268. <a class="remove-underline" :href="totalPath[i - 1][j - 1]">
  269. {{ total[i - 1][j - 1] }}
  270. </a>
  271. </div>
  272. </div>
  273. </nuxt-link> -->
  274. </v-expansion-panel-content>
  275. <div v-if="i !== titles.length" class="mx-5 my-2" style="border-bottom: 1px solid #e5e5e5"></div>
  276. </v-expansion-panel>
  277. </v-expansion-panels>
  278. <!-- <v-expansion-panels accordion flat style="font-size: 12px">
  279. <v-expansion-panel style="background: #f8f8f8">
  280. <v-expansion-panel-header
  281. class="primary--text"
  282. expand-icon="mdi-plus"
  283. >
  284. {{ $t(titles[0]) }}
  285. </v-expansion-panel-header>
  286. </v-expansion-panel>
  287. <div
  288. class="mx-5 my-2"
  289. style="border-bottom: 1px solid #e5e5e5"
  290. ></div>
  291. <v-expansion-panel style="background: #f8f8f8">
  292. <v-expansion-panel-header
  293. class="primary--text"
  294. expand-icon="mdi-plus"
  295. >
  296. {{ $t(titles[1]) }}
  297. </v-expansion-panel-header>
  298. </v-expansion-panel>
  299. <div
  300. class="mx-5 my-2"
  301. style="border-bottom: 1px solid #e5e5e5"
  302. ></div>
  303. <v-expansion-panel style="background: #f8f8f8">
  304. <v-expansion-panel-header
  305. class="primary--text"
  306. expand-icon="mdi-plus"
  307. >
  308. {{ $t(titles[2]) }}
  309. </v-expansion-panel-header>
  310. </v-expansion-panel>
  311. <div
  312. class="mx-5 my-2"
  313. style="border-bottom: 1px solid #e5e5e5"
  314. ></div>
  315. <v-expansion-panel style="background: #f8f8f8">
  316. <v-expansion-panel-header
  317. class="primary--text"
  318. expand-icon="mdi-plus"
  319. >
  320. {{ $t(titles[3]) }}
  321. </v-expansion-panel-header>
  322. </v-expansion-panel>
  323. <div
  324. class="mx-5 my-2"
  325. style="border-bottom: 1px solid #e5e5e5"
  326. ></div>
  327. <v-expansion-panel style="background: #f8f8f8">
  328. <v-expansion-panel-header
  329. class="primary--text"
  330. expand-icon="mdi-plus"
  331. >
  332. {{ $t(titles[4]) }}
  333. </v-expansion-panel-header>
  334. </v-expansion-panel>
  335. </v-expansion-panels> -->
  336. </v-card>
  337. <!-- phone menu -->
  338. <v-card width="100%" height="auto" flat color="transparent" class="hidden-md-and-up">
  339. <v-card v-if="$i18n.locale == 'zh-tw'" flat color="transparent" :height="width > 600 ? '120' : '60'"
  340. class="d-flex flex-row align-end" :class="width > 600 ? 'justify-center' : 'justify-start ml-3'">
  341. <a :href="FollowUsPath[i - 1]" v-for="i in FollowUsIcon.length" :key="i" style="margin: 0 15px"
  342. target="_blank">
  343. <v-img width="32" :src="require(`@/assets/svg/${FollowUsIcon[i - 1]}.svg`)"></v-img>
  344. </a>
  345. </v-card>
  346. <v-card v-else flat color="transparent" :height="width > 600 ? '120' : '60'" class="d-flex flex-row align-end"
  347. :class="width > 600 ? 'justify-center' : 'justify-start ml-3'">
  348. <a :href="FollowUsPath_en[i - 1]" v-for="i in FollowUsIcon.length" :key="i" style="margin: 0 15px"
  349. target="_blank">
  350. <v-img width="32" :src="require(`@/assets/svg/${FollowUsIcon[i - 1]}.svg`)"></v-img>
  351. </a>
  352. </v-card>
  353. <v-card flat color="transparent" height="60" class="d-flex align-end"
  354. :class="width > 600 ? 'justify-center' : 'justify-start ml-3'">
  355. <v-img max-width="200" class="mb-2" :class="width > 600 ? 'mx-auto' : 'ml-4'"
  356. :src="require('@/assets/svg/logo_v2.svg')"></v-img>
  357. </v-card>
  358. </v-card>
  359. <v-card width="100%" flat color="transparent" class="grey--text text--lighten-1 mb-2 mt-auto"
  360. :class="width > 600 ? 'text-center' : 'text-start pl-6'">
  361. {{ $t("Copyright © 2022 ShowEasy All Rights Reserved.") }}
  362. </v-card>
  363. </v-card>
  364. </div>
  365. </template>
  366. <script>
  367. export default {
  368. data() {
  369. return {
  370. showEasy: [],
  371. showEasyPath: [
  372. "/",
  373. "/aboutus",
  374. /*"/",
  375. "/",*/
  376. "https://www.104.com.tw/company/1a2x6bltae",
  377. //"/",
  378. "/faq",
  379. ],
  380. forExhibitorAndVIsitor: [],
  381. forExhibitorAndVIsitorPath: [
  382. "/",
  383. "https://medium.com/showeasy",
  384. //"/"
  385. ],
  386. forExhibitorAndVIsitorPath_en: [
  387. "/",
  388. "https://medium.com/showeasy-eng",
  389. //"/"
  390. ],
  391. forPartner: [],
  392. forPartnerPath: [
  393. "/",
  394. "https://forms.gle/83ysunPvPcpetYvH8",
  395. // "/"
  396. ],
  397. termsOfUse: [],
  398. termsOfUsePath: [
  399. "/",
  400. "/termsandconditions",
  401. "/privacypolicy",
  402. "/cookiepolicy",
  403. ],
  404. contact: ["886-2-2725-5000", "info@showeasy.com"],
  405. contactPath: ["tel:886-2-2725-5000", "mailto:info@showeasy.com"],
  406. FollowUsIcon: ["fb", "ig", "medium"],
  407. FollowUsPath: [
  408. "https://www.facebook.com/MakeYourShowEasy",
  409. "https://www.instagram.com/showeasy_/",
  410. "https://medium.com/showeasy",
  411. ],
  412. FollowUsPath_en: [
  413. "https://www.facebook.com/MakeYourShowEasy",
  414. "https://www.instagram.com/showeasy_/",
  415. "https://medium.com/showeasy-eng",
  416. ],
  417. total: [],
  418. totalPath: [],
  419. totalPath_en: [],
  420. titles: [],
  421. width: undefined,
  422. };
  423. },
  424. created() {
  425. if (process.client) {
  426. this.width = window.innerWidth;
  427. }
  428. this.showEasy = [
  429. "ShowEasy",
  430. "About Us",
  431. /* "Press",
  432. "News",*/
  433. "Recruitment",
  434. //"Our Partner",
  435. "FAQ",
  436. ];
  437. this.forExhibitorAndVIsitor = [
  438. "For Exhibitor.Visitor",
  439. "Blog",
  440. //"ShowEasy Advantage",
  441. ];
  442. this.forPartner = [
  443. // "For Partner",
  444. // "Become Partner",
  445. // "Partner Login"
  446. ];
  447. this.termsOfUse = [
  448. "Terms of Use",
  449. "Terms & Conditions",
  450. "Privacy Policy",
  451. "Cookie Policy",
  452. ];
  453. this.total = [
  454. this.showEasy.slice(1),
  455. this.forExhibitorAndVIsitor.slice(1),
  456. // this.forPartner.slice(1),
  457. this.termsOfUse.slice(1),
  458. this.contact,
  459. ];
  460. this.totalPath = [
  461. this.showEasyPath.slice(1),
  462. this.forExhibitorAndVIsitorPath.slice(1),
  463. // this.forPartnerPath.slice(1),
  464. this.termsOfUsePath.slice(1),
  465. this.contactPath,
  466. ];
  467. this.totalPath_en = [
  468. this.showEasyPath.slice(1),
  469. this.forExhibitorAndVIsitorPath_en.slice(1),
  470. // this.forPartnerPath.slice(1),
  471. this.termsOfUsePath.slice(1),
  472. this.contactPath,
  473. ];
  474. this.titles = [
  475. "ShowEasy",
  476. "For Exhibitor・Visitor",
  477. // "For Partner",
  478. "Terms of Use",
  479. "Contact Us",
  480. ];
  481. },
  482. mounted() {
  483. this.$nextTick(() => {
  484. window.addEventListener("resize", this.onResize);
  485. });
  486. },
  487. beforeDestroy() {
  488. window.removeEventListener("resize", this.onResize);
  489. },
  490. methods: {
  491. onResize() {
  492. if (process.client) {
  493. this.width = window.innerWidth;
  494. }
  495. },
  496. },
  497. };
  498. </script>
  499. <style lang="scss" scoped>
  500. .bottom-line {
  501. position: relative;
  502. }
  503. .bottom-line:after {
  504. content: "";
  505. height: 1px;
  506. width: 85%;
  507. position: absolute;
  508. left: 5%;
  509. bottom: 0;
  510. background-color: #ddd;
  511. }
  512. .block p {
  513. position: relative;
  514. top: 50%;
  515. transform: translateY(-50%);
  516. margin-left: 10px;
  517. }
  518. .block2 p {
  519. position: relative;
  520. top: 50%;
  521. transform: translateY(-50%);
  522. margin-left: 10px;
  523. }
  524. .row-extend {
  525. width: 140% !important;
  526. }
  527. .text-dont-wrap {
  528. clear: both;
  529. display: inline-block;
  530. overflow: hidden;
  531. white-space: nowrap;
  532. }
  533. .my-container {
  534. max-width: 100% !important;
  535. }
  536. .footer {
  537. background-color: $Neutrals-100;
  538. }
  539. </style>