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.

520 lines
18 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
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
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
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
2 years ago
  1. <template>
  2. <div class="home-view">
  3. <Hero :slogan="slogan" :subslogan="subslogan" :populars="populars"
  4. :exhibitionsSearchs="exhibitionsSearchs"
  5. :exhibitionsLocations="exhibitionsLocations" :exhibitionsCategories="exhibitionsCategories" :banner="banner"
  6. :exhibitionsKeywords="exhibitionsKeywords" />
  7. <centerMode :list="ads" v-if="ads.length"></centerMode>
  8. <!-- <AdBanner :item="apiData.ads" /> -->
  9. <section class="tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  10. <ChoiceReason :reasons="reasons"></ChoiceReason>
  11. </section>
  12. <section class="xl:tw-max-w-[1366px] xl:tw-mx-auto">
  13. <FocusExhibition></FocusExhibition>
  14. </section>
  15. <!-- <section class="tw-px-[30px] xl:tw-px-[60px] tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  16. <h2 class="t18 tw-font-medium tw-mb-[28px] md:tw-float-left md:t24 xl:t28">
  17. * 國外 {{ $t("Focus Exhibitions") }}
  18. </h2>
  19. <FocusExhibition2 v-if="focusExhibitionlist.length > 0" :focusExhibitionlist="focusExhibitionlist"></FocusExhibition2>
  20. </section> -->
  21. <section class="xl:tw-max-w-[1366px] xl:tw-mx-auto">
  22. <ExhibitionStrategy v-if="strategyList.length > 0" :strategyList="strategyList"></ExhibitionStrategy>
  23. </section>
  24. <section class="xl:tw-max-w-[1366px] xl:tw-mx-auto">
  25. <Advertisement v-if="advertisementList.length > 0" :advertisementList="advertisementList"></Advertisement>
  26. </section>
  27. <!-- <section class="tw-px-[30px] xl:tw-px-[60px] tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  28. <h2 class="t18 tw-font-medium tw-text-primary-default tw-mb-[28px] md:tw-float-left md:t24 xl:t28">
  29. {{ $t("Highlight Exhibitions") }}
  30. </h2>
  31. <newHighlightExhibitions></newHighlightExhibitions>
  32. </section>
  33. <section class="tw-pl-[30px] xl:tw-px-[60px] tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto"
  34. v-show="services.length > 0">
  35. <h2 class="t18 tw-font-medium tw-text-primary-default tw-mb-[8px] md:t24 xl:tw-float-left xl:t28">
  36. {{ $t("Trending Services") }}
  37. </h2>
  38. <TrendingService :services="services" />
  39. </section>
  40. <section class="tw-px-[30px] xl:tw-px-[60px] tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  41. <h2 class="t18 tw-font-medium tw-text-primary-default tw-mb-[24px] md:t24 xl:t28" v-show="themes.length > 0">
  42. {{ $t("Featured Exhibition Themes") }}
  43. </h2>
  44. <FeaturedExhibitonThemes :themes="themes" :title="themesTitle" />
  45. </section>
  46. <section class="tw-pl-[30px] xl:tw-px-[60px] tw-mt-[50px] md:tw-mt-[70px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  47. <h2 class="t18 tw-font-medium tw-text-primary-default tw-mb-[24px] md:t24 xl:t28">
  48. {{ $t("Trending Destination Services") }}
  49. </h2>
  50. <TrendingDestinationServices :themes="serviceThemes" :title="serviceThemesTitle">
  51. </TrendingDestinationServices>
  52. </section> -->
  53. <OtherInfo />
  54. <section class="tw-px-[30px] tw-mt-[50px] md:tw-mt-[95px] xl:tw-px-[60px] xl:tw-max-w-[1366px] xl:tw-mx-auto">
  55. <h2 class="t18 tw-font-medium tw-text-primary-default tw-mt-[25px] md:t24 xl:t28">
  56. {{ $t("Partnership") }}
  57. </h2>
  58. <Partnership v-if="partnershiplist.length > 0" :partnershiplist="partnershiplist"></Partnership>
  59. </section>
  60. <BottomInfo :countries="countries" :cards="cards" :categories="categories"/>
  61. <CookieUnderModal />
  62. </div>
  63. </template>
  64. <script>
  65. import Hero from "@/components/home/Hero";
  66. // import AdBanner from "@/components/home/AdBanner";
  67. import centerMode from "@/components/swiper/centerMode";
  68. import ChoiceReason from "@/components/home/ChoiceReason";
  69. import FocusExhibition from "@/components/home/FocusExhibition";
  70. // import FocusExhibition2 from "@/components/home/FocusExhibition2";
  71. // import newHighlightExhibitions from "@/components/home/newHighlightExhibitions.vue";
  72. // import TrendingService from "@/components/home/TrendingService";
  73. // import FeaturedExhibitonThemes from "@/components/home/FeaturedExhibitonThemes";
  74. // import TrendingDestinationServices from "@/components/home/TrendingDestinationServices";
  75. import OtherInfo from "@/components/home/OtherInfo";
  76. import Partnership from "@/components/home/Partnership";
  77. import BottomInfo from "@/components/home/BottomInfo";
  78. import CookieUnderModal from "@/components/home/CookieUnderModal";
  79. import ExhibitionStrategy from "@/components/home/ExhibitionStrategy";
  80. import Advertisement from "@/components/home/Advertisement";
  81. // import jwt_decode from "jwt-decode";
  82. // import { getData } from "~/utils/assist";
  83. // import { onMounted } from "vue";
  84. export default {
  85. data() {
  86. return {
  87. title: '1',
  88. apiUrl: process.env.SERVICE_CONSOLE,
  89. slogan: '',
  90. subslogan: '',
  91. populars: {
  92. search: [],
  93. service: []
  94. },
  95. // servicesSearchs: [],
  96. // servicesLocations: [],
  97. // serviceKeywords: [],
  98. exhibitionsSearchs: [],
  99. exhibitionsLocations: [{
  100. id: '1',
  101. region: 'Taiwan',
  102. countries: [{
  103. id: '2',
  104. country: 'USA',
  105. cities: [{
  106. id: '3',
  107. city: 'Japan'
  108. }]
  109. }]
  110. }],
  111. exhibitionsCategories: [
  112. ],
  113. exhibitionsKeywords: [],
  114. banner: '',
  115. ads: [
  116. {
  117. id: 'banner_1',
  118. image: require('/assets/img/banner/banner_1.png'),
  119. url: '/'
  120. },
  121. {
  122. id: 'banner_2',
  123. image: require('/assets/img//banner/banner_2.png'),
  124. url: '/'
  125. },
  126. {
  127. id: 'banner_3',
  128. image: require('/assets/img//banner/banner_3.png'),
  129. url: '/'
  130. },
  131. {
  132. id: 'banner_4',
  133. image: require('/assets/img//banner/banner_4.png'),
  134. url: '/'
  135. },
  136. {
  137. id: 'banner_5',
  138. image: require('/assets/img//banner/banner_5.png'),
  139. url: '/'
  140. }
  141. ],
  142. advertisementList: [{
  143. image: require('/assets/img/Frame.jpg')
  144. },{
  145. image: require('/assets/img/Frame.jpg')
  146. },{
  147. image: require('/assets/img/Frame.jpg')
  148. }
  149. ],
  150. services: [{
  151. id: '1',
  152. name: 'VISA Application (Vietnam)',
  153. price: '35',
  154. region: '0',
  155. country: '0',
  156. subcategory: 'VISA',
  157. rating: '5.4',
  158. reviews: '344',
  159. preview_image: require('~/assets/img/bookingInfoTest.png'),
  160. payment_currency: 'USD',
  161. },{
  162. id: '1',
  163. name: 'VISA Application (Vietnam)',
  164. price: '35',
  165. region: '0',
  166. country: '0',
  167. subcategory: 'VISA',
  168. rating: '5.4',
  169. reviews: '344',
  170. preview_image: require('~/assets/img/bookingInfoTest.png'),
  171. payment_currency: 'USD',
  172. },{
  173. id: '1',
  174. name: 'VISA Application (Vietnam)',
  175. price: '35',
  176. region: '0',
  177. country: '0',
  178. subcategory: 'VISA',
  179. rating: '5.4',
  180. reviews: '344',
  181. preview_image: require('~/assets/img/bookingInfoTest.png'),
  182. payment_currency: 'USD',
  183. },{
  184. id: '1',
  185. name: 'VISA Application (Vietnam)',
  186. price: '35',
  187. region: '0',
  188. country: '0',
  189. subcategory: 'VISA',
  190. rating: '5.4',
  191. reviews: '344',
  192. preview_image: require('~/assets/img/bookingInfoTest.png'),
  193. payment_currency: 'USD',
  194. }],
  195. reasons:[{
  196. name: '一站可查全球展會',
  197. content: '全球上千場展覽,透過關鍵字或類別查詢,時間、地點、展館、主辦單位…等,資料為您備齊。',
  198. url: 'javascript:void(0);',
  199. image: require('~/assets/img/search-field.png')
  200. },{
  201. name: '網羅辦展所需服務',
  202. content: '展品運輸、展館服務…等服務,我們一一為您網羅,ShowEasy 讓您線上查詢、預約,輕鬆管理您的訂單。',
  203. url: 'javascript:void(0);',
  204. image: require('~/assets/img/shopping-bag.png')
  205. },{
  206. name: '嚴選供應商品質保障',
  207. content: 'ShowEasy 擁有嚴謹的供應商審核制度,憑藉展會業資深團隊深厚的經驗,為您所訂購的服務品質查核。',
  208. url: 'javascript:void(0);',
  209. image: require('~/assets/img/medal.png')
  210. },{
  211. name: '展會服務數位化',
  212. content: 'ShowEasy 將展會產業鏈數位化,達到查找服務便利、訂購流程簡便、線上即時下單的效益。',
  213. url: 'javascript:void(0);',
  214. image: require('~/assets/img/mac-os.png')
  215. }],
  216. themes: [{
  217. name: '',
  218. url: '/',
  219. image: require('~/assets/img/thems/Exhibiton-Themes-01.png')
  220. },{
  221. name: '',
  222. url: '/',
  223. image: require('/assets/img/thems/Exhibiton-Themes-02.png')
  224. },{
  225. name: '',
  226. url: '/',
  227. image: require('/assets/img/thems/Exhibiton-Themes-03.png')
  228. },{
  229. name: '',
  230. url: '/',
  231. image: require('/assets/img/thems/Exhibiton-Themes-04.png')
  232. }],
  233. themesTitle: '',
  234. serviceThemes: [{
  235. name: '',
  236. image: require('/assets/img/thems/Frame33.png')
  237. },{
  238. name: '',
  239. image: require('/assets/img/thems/Frame34.png')
  240. },{
  241. name: '',
  242. image: require('/assets/img/thems/Frame35.png')
  243. },{
  244. name: '',
  245. image: require('/assets/img/thems/Frame36.png')
  246. },{
  247. name: '',
  248. image: require('/assets/img/thems/Frame37.png')
  249. }],
  250. serviceThemesTitle: '',
  251. countries: [
  252. ],
  253. cards: [
  254. ],
  255. categories: [
  256. ],
  257. partnershiplist: [{
  258. image: require('/assets/img/partnership/A_best_world.png')
  259. },{
  260. image: require('/assets/img/partnership/Brilliant.png')
  261. },{
  262. image: require('/assets/img/partnership/DJB_logo.jpg')
  263. },{
  264. image: require('/assets/img/partnership/euro_logo.png')
  265. },{
  266. image: require('/assets/img/partnership/fullon.jpg')
  267. },{
  268. image: require('/assets/img/partnership/hanselogo.png')
  269. },{
  270. image: require('/assets/img/partnership/nanrunglogo.png')
  271. },{
  272. image: require('/assets/img/partnership/PILATUS.png')
  273. },{
  274. image: require('/assets/img/partnership/Shilin_Flower_ArtLOGO.png')
  275. },{
  276. image: require('/assets/img/partnership/starpubliclogo.png')
  277. },{
  278. image: require('/assets/img/partnership/Tripool.png')
  279. },{
  280. image: require('/assets/img/partnership/Xinfeng_Logo.png')
  281. }],
  282. strategyList:[{
  283. title: '海外參展大補帖 — 申請展覽補助',
  284. url:'https://medium.com/showeasy/%E6%B5%B7%E5%A4%96%E5%8F%83%E5%B1%95%E5%A4%A7%E8%A3%9C%E5%B8%96-%E7%94%B3%E8%AB%8B%E5%B1%95%E8%A6%BD%E8%A3%9C%E5%8A%A9-2de6e9a4b6f9',
  285. date: 'June 14, 2021',
  286. content: '疫情的侵略,全世界會展產業都停滯,參展商也很難在收入銳減的的情況下參加國際展,但你知道嗎,其實有方法可以減少負擔的參與國際展覽呦',
  287. },{
  288. title: '【與誰同行?】 展覽選好了、報名好了 老闆該派誰去? 我們該怎麼準備呢?',
  289. url:'https://medium.com/showeasy/%E8%88%87%E8%AA%B0%E5%90%8C%E8%A1%8C-%E5%B1%95%E8%A6%BD%E9%81%B8%E5%A5%BD%E4%BA%86-%E5%A0%B1%E5%90%8D%E5%A5%BD%E4%BA%86-%E8%80%81%E9%97%86%E8%A9%B2%E6%B4%BE%E8%AA%B0%E5%8E%BB-%E6%88%91%E5%80%91%E8%A9%B2%E6%80%8E%E9%BA%BC%E6%BA%96%E5%82%99%E5%91%A2-bc45769a06b',
  290. date: 'June 14, 2021',
  291. content: '講到「參展」,我們第一個會想到怎麼裝潢攤位、擺設商品,或者是怎麼將我們的展品運到展場。但是,你有想到其實工作人員的安排也是一件很重要的事嗎?',
  292. },{
  293. title: '如何挑選合適的攤位面積?',
  294. url:'https://medium.com/showeasy/%E5%A6%82%E4%BD%95%E6%8C%91%E9%81%B8%E5%90%88%E9%81%A9%E7%9A%84%E6%94%A4%E4%BD%8D%E9%9D%A2%E7%A9%8D-43a9b027c35e',
  295. date: 'June 14, 2021',
  296. content: '臺灣是外銷出口大國,在各種行銷方法中,「參加國際展覽」是接觸海外買主、開發潛在客戶的重要渠道,但報名參展時,很多的製造商或品牌商對於自己的',
  297. }
  298. ]
  299. };
  300. },
  301. props: ["langChange"],
  302. name: "IndexPage",
  303. auth: false,
  304. head: {
  305. title: "ShowEasy-we make your show easy!",
  306. },
  307. components: {
  308. Hero,
  309. // AdBanner,
  310. centerMode,
  311. ChoiceReason,
  312. FocusExhibition,
  313. // newHighlightExhibitions,
  314. // TrendingService,
  315. // FeaturedExhibitonThemes,
  316. // TrendingDestinationServices,
  317. OtherInfo,
  318. Partnership,
  319. BottomInfo,
  320. CookieUnderModal,
  321. ExhibitionStrategy,
  322. Advertisement,
  323. },
  324. created() {
  325. // this.getBanner();
  326. this.getBaseInfo();
  327. this.getCountries();
  328. // this.getCards();
  329. this.getCategories();
  330. this.getLocations();
  331. this.getPopular();
  332. // await this.getServiceKeywords();
  333. // await this.getExhibitionsKeywords();
  334. // await this.getServiceHistory();
  335. // await this.getExhibitionsHistory();
  336. // await this.getServiceLocations();
  337. // await this.getExhibitionsLocations();
  338. // await this.getExhibitionsCategories();
  339. // await this.getExhibitionsCollections();
  340. // await this.getServices();
  341. // await this.getExhibitionsTheme();
  342. // await this.getServiceTheme();
  343. // await this.getPartnership();
  344. if (this.$auth.loggedIn) {
  345. this.$store.dispatch("updatePicture");
  346. }
  347. },
  348. watch: {
  349. currency: {
  350. handler: function () {
  351. // await this.getServices();
  352. },
  353. },
  354. },
  355. computed: {
  356. currency() {
  357. return this.$store.getters.getCurrency;
  358. },
  359. },
  360. methods: {
  361. // getBanner() {
  362. // this.$axios
  363. // .get(`/trending/api/index/banner?Lang=${this.$i18n.localeProperties["langQuery"]}`)
  364. // .then((response) => {
  365. // if(response && response.data && response.data.DATA && response.data.DATA.rel){
  366. // let data = response.data.DATA.rel
  367. // if(data.length>0){
  368. // let arr = [];
  369. // for(let i=0;i<data.length;i++){
  370. // let target = {};
  371. // target.image = data[i];
  372. // arr.push(target);
  373. // }
  374. // this.ads = arr;
  375. // }
  376. // }
  377. // })
  378. // .catch((error) =>
  379. // console.log(error)
  380. // );
  381. // },
  382. getBaseInfo(){
  383. this.$axios
  384. .get(`/trending/api/index/baseInfo?Lang=${this.$i18n.localeProperties["langQuery"]}`)
  385. .then((response) => {
  386. if(response && response.data && response.data.DATA && response.data.DATA.rel){
  387. let data = response.data.DATA.rel
  388. if(data){
  389. this.slogan = data.Slogan;
  390. this.subslogan = data.SubSlogan;
  391. this.banner = data.Image;
  392. if(data.PopularSearchs){
  393. if(data.PopularSearchs.indexOf(',') !=-1){
  394. this.populars.search = data.PopularSearchs.split(',');
  395. }else{
  396. this.populars.search.push(data.PopularSearchs);
  397. }
  398. }
  399. if(data.ProductNames){
  400. if(data.ProductNames.indexOf(',') !=-1){
  401. this.populars.service = data.ProductNames.split(',');
  402. }else{
  403. this.populars.service.push(data.ProductNames);
  404. }
  405. }
  406. }
  407. }
  408. })
  409. .catch((error) =>
  410. console.log(error)
  411. );
  412. },
  413. getCountries() {
  414. this.$axios
  415. .get(`/trending/api/location/countries?RegionID&Lang=${this.$i18n.localeProperties["langQuery"]}`)
  416. .then((response) => {
  417. if(response && response.data && response.data.DATA && response.data.DATA.rel){
  418. let data = response.data.DATA.rel
  419. if(data.length>0){
  420. let arr = [];
  421. for(let i=0;i<data.length;i++){
  422. let target = {};
  423. target.name = data[i].CountryName;
  424. target.id = data[i].CountryID;
  425. target.url = "/exhibition?country=" + data[i].CountryID;
  426. arr.push(target);
  427. }
  428. this.countries = arr;
  429. }
  430. }
  431. })
  432. .catch((error) =>
  433. console.log(error)
  434. );
  435. },
  436. // getCards() {
  437. // this.$axios
  438. // .get(`/trending/api/Exhibition/Cards?Lang=${this.$i18n.localeProperties["langQuery"]}`)
  439. // .then((response) => {
  440. // if(response && response.data && response.data.DATA && response.data.DATA.rel){
  441. // let data = response.data.DATA.rel
  442. // if(data.length>0){
  443. // let arr = [];
  444. // for(let i=0;i<data.length;i++){
  445. // let target = {};
  446. // target.name = data[i].ExhibitionName;
  447. // target.id = data[i].ExhibitionID;
  448. // target.url = "/exhibition/" + data[i].ExhibitionID;
  449. // arr.push(target);
  450. // }
  451. // this.cards = arr;
  452. // }
  453. // }
  454. // })
  455. // .catch((error) =>
  456. // console.log(error)
  457. // );
  458. // },
  459. getCategories() {
  460. this.$axios
  461. .get(`/trending/api/Exhibition/Categories?Lang=${this.$i18n.localeProperties["langQuery"]}`)
  462. .then((response) => {
  463. if(response && response.data && response.data.DATA && response.data.DATA.rel){
  464. let data = response.data.DATA.rel
  465. if(data.length>0){
  466. this.exhibitionsCategories = data;
  467. }
  468. }
  469. })
  470. .catch((error) =>
  471. console.log(error)
  472. );
  473. },
  474. getLocations() {
  475. this.$axios
  476. .get(`/trending/api/Exhibition/Locations?Lang=${this.$i18n.localeProperties["langQuery"]}`)
  477. .then((response) => {
  478. if(response && response.data && response.data.DATA && response.data.DATA.rel){
  479. let data = response.data.DATA.rel
  480. if(data){
  481. this.exhibitionsLocations = data;
  482. }
  483. }
  484. })
  485. .catch((error) =>
  486. console.log(error)
  487. );
  488. },
  489. getPopular() {
  490. this.$axios
  491. .get(`/trending/api/Exhibition/Popular?Lang=${this.$i18n.localeProperties["langQuery"]}&Count=10`)
  492. .then((response) => {
  493. if(response && response.data && response.data.DATA && response.data.DATA.rel){
  494. let data = response.data.DATA.rel
  495. if(data.length>0){
  496. let arr = [];
  497. for(let i=0;i<data.length;i++){
  498. let target = {};
  499. target.name = data[i].ExhibitionName;
  500. target.id = data[i].ExhibitionID;
  501. target.url = "/exhibition/" + data[i].ExhibitionID;
  502. arr.push(target);
  503. }
  504. this.categories = arr;
  505. }
  506. }
  507. })
  508. .catch((error) =>
  509. console.log(error)
  510. );
  511. },
  512. }
  513. };
  514. </script>
  515. <style lang="scss" scoped>
  516. </style>