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.

722 lines
24 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
  1. <template>
  2. <div
  3. class="exhibition-content tw-grid tw-grid-cols-1 tw-gap-[30px] tw-mt-[20px] tw-mb-[60px] md:tw-px-[30px] md:tw-mt-[30px] xl:tw-px-[60px] xl:tw-max-w-screen-xl xl:tw-mx-auto xl:tw-grid-cols-[auto_364px]">
  4. <!-- {{ relatedservicelist.category }} І}-->
  5. <mobileFixTopBar ref="stickySwiper" :fixBar="fixBar" :currStep="currStep" :list="fixBarList"></mobileFixTopBar>
  6. <section class="section1 tw-px-[30px] md:tw-px-0 xl:tw-w-full xl:tw-col-span-2">
  7. <ExhibitionBannerArea :exhibition="exhibition"></ExhibitionBannerArea>
  8. </section>
  9. <section class="section2 tw-px-[30px] md:tw-px-0 xl:tw-pr-[30px] xl:tw-col-start-1 xl:tw-row-start-2">
  10. <!-- <Breadcrumbs class="tw-px-0 md:tw-mb-[22px]"></Breadcrumbs> І}-->
  11. <div class="tw-hidden md:tw-block">
  12. <div class="md:tw-h-[48px] md:tw-grid md:tw-grid-cols-3 md:tw-gap-[12px]">
  13. <a :href="exhibition.website" :target="exhibition.website == '#' ? '_self' : '_blank'">
  14. <div
  15. class="tw-bg-[#F6F6F6] tw-w-full tw-text-neutrals-800 elevation-0 tw-px-[34px] tw-py-[12px] tw-float-left tw-text-[16px]">
  16. <unicon name="globe" class="float-left mr-3" />
  17. <span>{{ $t("Official Website") }}</span>
  18. </div>
  19. </a>
  20. <a :href="
  21. 'https://www.facebook.com/share.php?u=' +
  22. this.currentDomain +
  23. this.$route.fullPath
  24. " target="_blank">
  25. <div
  26. class="tw-bg-[#F6F6F6] tw-w-full tw-text-neutrals-800 elevation-0 tw-px-[34px] tw-py-[12px] tw-float-left tw-text-[16px]">
  27. <unicon name="facebook-f" class="float-left mr-3" />
  28. <span class="mt-n2">{{ $t("Share with friends") }}</span>
  29. </div>
  30. </a>
  31. <div @click="toggleFavorite"
  32. class="tw-bg-[#F6F6F6] tw-w-full tw-text-neutrals-800 elevation-0 tw-px-[34px] tw-py-[12px] tw-float-left tw-text-[16px]">
  33. <v-icon class="mr-2" color="neutrals darken-5">{{ saved? "mdi-heart": "mdi-heart-outline" }}
  34. </v-icon>
  35. <span>{{ $t("Follow Event") }}</span>
  36. </div>
  37. </div>
  38. </div>
  39. </section>
  40. <!-- <section class="step section3 tw-px-[30px] md:tw-px-0 xl:tw-pr-[30px] xl:tw-col-start-1 xl:tw-row-start-3">
  41. <ExhibitionIntro class="d-block" :exhibition="exhibition"></ExhibitionIntro>
  42. </section> -->
  43. <section >
  44. <div ref="about" id="about" data-step="about" class="step section3 tw-px-[30px] md:tw-px-0 xl:tw-pr-[30px] xl:tw-col-start-1 xl:tw-row-start-3">
  45. <ExhibitionIntro class="d-block" :exhibition="exhibition"></ExhibitionIntro>
  46. </div>
  47. </section>
  48. <section class="section4 tw-ml-[12px] md:tw-ml-0 md:tw-px-0 xl:tw-col-start-1 xl:tw-row-start-4">
  49. <ExhibitionAD v-if="ads" :items="ads"></ExhibitionAD>
  50. </section>
  51. <section class="section5 tw-px-[30px] md:tw-px-0 xl:tw-col-start-1 xl:tw-row-start-5">
  52. <div v-if="relatedserviceShow">
  53. <h3 ref="relatedServices" id="relatedServices" data-step="relatedServices" class="step md:tw-text-[20px]">
  54. <two-dots class="tw-mr-7" />{{ $t("Related Services") }}
  55. </h3>
  56. <RelatedServicesSwiper :getCategory="getCategory" class="tw-mb-[30px] xl:tw-max-w-[822px]"
  57. @categoryid="getCategoryId" @getAllServiceList="getAllService" @test="testtest"></RelatedServicesSwiper>
  58. <template v-for="(item, index) in relatedservicelist">
  59. <RelatedServices v-if="index <= 2" :key="index" :relatedservice="item"
  60. :relatedservicelist="relatedservicelist" class="tw-mb-[20px] md:tw-mb-[30px]">
  61. </RelatedServices>
  62. </template>
  63. <button
  64. class="tw-body-3 tw-text-primary-1 tw-w-full tw-py-[10px] tw-justify-center tw-flex tw-flex-row tw-items-center">
  65. <nuxt-link v-if="getcategoryid" :to="localePath(getcategoryid)" target="_blank"
  66. class="tw-mr-[16px] hover:tw-text-primary-1">
  67. {{ $t('See more') }}
  68. </nuxt-link>
  69. <nuxt-link v-else :to="localePath('/service')" target="_blank" class="tw-mr-[16px] hover:tw-text-primary-1">
  70. {{ $t('See more') }}
  71. </nuxt-link>
  72. <img src="~/assets/svg/seeMore.svg" alt="" />
  73. </button>
  74. </div>
  75. <div ref="photoGallery" id="photoGallery" data-step="photoGallery"
  76. v-show="exhibition.gallery.length > 0 || exhibition.videos.length > 0" :class="['tw-mb-10 step']">
  77. <h3 class="md:tw-text-[20px]">
  78. <two-dots class="mr-7" />{{ $t("Photo & Video Gallery") }}
  79. </h3>
  80. <ExhibitionPhotoVideoGallery class="mt-lg-13 px-n7 mt-7"
  81. v-if="exhibition.gallery.length > 0 || exhibition.videos.length > 0" :exhibition="exhibition" />
  82. </div>
  83. <div ref="venue" id="venue" data-step="venue" v-show="exhibition.venues && exhibition.venues.length > 0"
  84. :class="['tw-mb-10 step']">
  85. <h3 class="md:tw-text-[20px]">
  86. <two-dots class="mr-7" />{{ $t("Venue") }}
  87. </h3>
  88. <ExhibitionVenue class="mt-lg-13 mt-7" v-if="exhibition.venues && exhibition.venues.length > 0"
  89. :exhibition="exhibition" />
  90. </div>
  91. <div ref="exhibitProfile" id="exhibitProfile" data-step="exhibitProfile" v-show="exhibition.profile != ''"
  92. :class="['tw-mb-10 step']">
  93. <h3 class="md:tw-text-[20px]">
  94. <two-dots class="mr-7" />{{ $t("Exhibit Profile") }}
  95. </h3>
  96. <ExhibitionExhibitProfile class="mt-lg-13 mt-7" :exhibition="exhibition" />
  97. </div>
  98. <div ref="detailedDescription" id="detailedDescription" data-step="detailedDescription" :class="['step']"
  99. v-show="exhibition.description != ''">
  100. <h3 class="md:tw-text-[20px]">
  101. <two-dots class="mr-7" />{{ $t("Detailed Description") }}
  102. </h3>
  103. <ExhibitionDetailDescription class="mt-lg-13 mt-7" :exhibition="exhibition" />
  104. </div>
  105. </section>
  106. <!-- <section class="section6 tw-px-[30px] md:tw-px-0 xl:tw-col-span-2 xl:tw-row-start-6">
  107. <h3>
  108. <two-dots class="step tw-mr-7" />{{ $t("You might like ...") }}
  109. </h3>
  110. <v-slide-group>
  111. <template v-for="(item, i) in exhibition.recommended">
  112. <v-slide-item v-if="exhibition.recommended" :key="i">
  113. <nuxt-link :to="localePath('/exhibition/' + item.id)">
  114. <ExhibitionYouMightLike class="float-left" :item="item" />
  115. </nuxt-link>
  116. </v-slide-item>
  117. </template>
  118. </v-slide-group>
  119. </section> -->
  120. <section class="section7 tw-hidden xl:tw-block xl:tw-row-start-2 xl:tw-row-end-6">
  121. <sideBarMenu :fixBarList="fixBarList" :currStep="currStep"></sideBarMenu>
  122. </section>
  123. </div>
  124. </template>
  125. <script>
  126. import ExhibitionBannerArea from "@/components/exhibition/ExhibitionBannerArea";
  127. import ExhibitionIntro from "@/components/exhibition/ExhibitionIntro";
  128. import ExhibitionReviews from "@/components/exhibition/ExhibitionReviews";
  129. import ExhibitionPhotoVideoGallery from "@/components/exhibition/ExhibitionPhotoVideoGallery";
  130. import Breadcrumbs from "@/components/Breadcrumbs";
  131. import TwoDots from "@/components/TwoDots";
  132. import ExhibitionAD from "@/components/exhibition/ExhibitionAD";
  133. import ExhibitionYouMightLike from "@/components/exhibition/ExhibitionYouMightLike";
  134. import { Swiper, SwiperSlide } from "vue-awesome-swiper";
  135. import { scrollama } from "scrollama";
  136. import SeeMoreDetailDescription from "@/components/exhibition/SeeMoreDetailDescription.vue";
  137. import RelatedServices from "@/components/service/RelatedServicesCard.vue";
  138. import RelatedServicesSwiper from "@/components/swiper/relatedService.vue";
  139. import mobileFixTopBar from "@/components/swiper/mobileFixTopBar.vue";
  140. import sideBarMenu from "@/components/service/content/sideBarMenu.vue";
  141. import { CornerDownLeftIcon } from "vue-feather-icons";
  142. export default {
  143. auth: false,
  144. name: "ExhibitionContent",
  145. components: {
  146. Breadcrumbs,
  147. ExhibitionAD,
  148. ExhibitionBannerArea,
  149. ExhibitionIntro,
  150. ExhibitionReviews,
  151. ExhibitionPhotoVideoGallery,
  152. ExhibitionYouMightLike,
  153. Swiper,
  154. SwiperSlide,
  155. scrollama,
  156. TwoDots,
  157. SeeMoreDetailDescription,
  158. RelatedServices,
  159. RelatedServicesSwiper,
  160. mobileFixTopBar,
  161. sideBarMenu,
  162. },
  163. meta: {
  164. pageName: "Exhibition content",
  165. },
  166. head() {
  167. return {
  168. title: this.exhibition.ExhibitionName,
  169. meta: [
  170. {
  171. name: this.exhibition.ExhibitionName,
  172. content: this.exhibition.description,
  173. },
  174. { hid: "og:title", name: "og:title", content: this.exhibition.name },
  175. { hid: "og:image", name: "og:image", content: this.exhibition.logo },
  176. {
  177. hid: "og:url",
  178. name: "og:url",
  179. content: this.currentDomain + this.$route.fullPath,
  180. },
  181. {
  182. hid: "og:description",
  183. name: "og:description",
  184. content: this.exhibition.description,
  185. },
  186. { hid: "og:type", name: "og:type", content: "website" },
  187. // other meta
  188. ],
  189. };
  190. },
  191. data() {
  192. return {
  193. windowHeight: 0,
  194. currentDomain: "https://www.showeasy.com",
  195. apiUrl: process.env.SERVICE_CONSOLE,
  196. list: [],
  197. navControl: {
  198. ad: true,
  199. nav: false,
  200. mobnav: false,
  201. },
  202. ads: [],
  203. exhibitionID: "",
  204. tab: "0",
  205. saved: false,
  206. Favorite: {},
  207. favoriteSet: new Set(),
  208. exhibition: {
  209. id: null,
  210. name: "",
  211. enname: "",
  212. subtitle: null,
  213. region: {},
  214. country: {},
  215. city: {},
  216. logo: "",
  217. banner: null,
  218. startdate: "",
  219. enddate: "",
  220. status: "",
  221. website: "",
  222. isRecommend: null,
  223. isLiked: null,
  224. rating: 0,
  225. reviewCount: null,
  226. exhibitors: "",
  227. visitors: "",
  228. internalexhibitors: null,
  229. intVisitors: 0,
  230. area: null,
  231. showstatusid: 100,
  232. about: "",
  233. profile: "",
  234. description: "",
  235. shortName: null,
  236. frequency: {},
  237. online: {},
  238. organizers: [],
  239. videos: [],
  240. gallery: {},
  241. venues: [],
  242. categories: [],
  243. subcategories: [],
  244. },
  245. relatedserviceShow: false,
  246. relatedservicelist: [],
  247. getservicecategory: [],
  248. seemore: false,
  249. getCategory: [],
  250. getcategoryid: "",
  251. testcategory: "",
  252. currStep: null,
  253. fixBar: false,
  254. fixBarList: [],
  255. };
  256. },
  257. async created() {
  258. this.getExhibitionCard();
  259. this.getAdList();
  260. this.getFavorite();
  261. // await this.getServiceCategory();
  262. // await this.getCategorySwiperList();
  263. // await this.getRelatedServiceList();
  264. // await this.checkRelatedService();
  265. },
  266. async beforeCreate() {
  267. },
  268. mounted() {
  269. let vm = this;
  270. vm.$nextTick(function () {
  271. vm.list = [
  272. /* {
  273. url: "#ExhibitionHighlightReview",
  274. name: "Highlight Review",
  275. isShow:false,
  276. },
  277. {
  278. url: "#ExhibitionRelatedServices",
  279. name: "Related Services",
  280. isShow:false,
  281. },*/
  282. {
  283. url: "#ExhibitionIntro",
  284. name: "Intro",
  285. isShow:
  286. this.exhibition.about.length > 0
  287. ? true
  288. : false,
  289. },
  290. {
  291. url: "#ExhibitionPhotoVideoGallery",
  292. name: "Photo & Video Gallery",
  293. isShow:
  294. this.exhibition.gallery.length > 0 ||
  295. this.exhibition.videos.length > 0
  296. ? true
  297. : false,
  298. },
  299. {
  300. url: "#ExhibitionVenue",
  301. name: "Venue",
  302. isShow:
  303. this.exhibition.venues && this.exhibition.venues.length > 0
  304. ? true
  305. : false,
  306. },
  307. {
  308. url: "#ExhibitionExhibitProfile",
  309. name: "Exhibit Profile",
  310. isShow: this.exhibition.profile ? true : false,
  311. },
  312. {
  313. url: "#ExhibitionDetailDescription",
  314. name: "Detailed Description",
  315. isShow: this.exhibition.description ? true : false,
  316. },
  317. /*{
  318. url: "#ExhibitionReviews",
  319. name: "Reviews",
  320. isShow:false,
  321. },*/
  322. ];
  323. // instantiate the scrollama
  324. const scrollama = require("scrollama");
  325. const scroller = scrollama();
  326. // setup the instance, pass callback functions
  327. scroller
  328. .setup({
  329. step: ".exhibition-content .step",
  330. offset: 0.6,
  331. })
  332. .onStepEnter((response) => {
  333. // { element, index, direction }
  334. vm.currStep = response.element.id;
  335. if (response.index > 3) {
  336. vm.$refs.stickySwiper.slideTo(4);
  337. } else {
  338. vm.$refs.stickySwiper.slideTo(0);
  339. }
  340. if (response.index >= 1) {
  341. vm.fixBar = true;
  342. } else {
  343. vm.fixBar = false;
  344. }
  345. })
  346. .onStepExit((response) => {
  347. // { element, index, direction }
  348. vm.currStep = response.element.id;
  349. if (response.index >= 1) {
  350. vm.fixBar = true;
  351. } else {
  352. vm.fixBar = false;
  353. }
  354. });
  355. });
  356. },
  357. watch: {
  358. relatedservicelist: {
  359. handler: function () {
  360. if (this.relatedservicelist) {
  361. this.relatedservicelist.forEach((item) => {
  362. this.serviceListCategory = item.category;
  363. if (this.getservicecategory) {
  364. this.getservicecategory.forEach((category) => {
  365. if (item.category == category.ids[0]) {
  366. item.category = category.lang_text;
  367. }
  368. });
  369. }
  370. });
  371. }
  372. },
  373. },
  374. },
  375. methods: {
  376. getExhibitionCard() {
  377. this.exhibitionID = this.$route.params.id;
  378. this.$axios
  379. .get(
  380. `/trending/api/Exhibition/Exhibition?Lang=${this.$i18n.localeProperties["langQuery"]}` +
  381. `&ExhibitionID=${this.exhibitionID}`
  382. )
  383. .then((result) => {
  384. if (result && result.data && result.data.DATA && result.data.DATA.rel) {
  385. let exhib = result.data.DATA.rel;
  386. this.exhibition.id = exhib.ExhibitionID;
  387. this.exhibition.name = exhib.ExhibitionName;
  388. this.exhibition.enname = exhib.ExhibitionENName;
  389. this.exhibition.subtitle = "";
  390. this.exhibition.region.name = exhib.Region.RegionName;
  391. this.exhibition.country.name = exhib.Country.CountryName;
  392. this.exhibition.city.name = exhib.City.CityName;
  393. this.exhibition.logo = exhib.Logo;
  394. this.exhibition.banner = "";
  395. this.exhibition.startdate = exhib.StartDate;
  396. this.exhibition.enddate = exhib.EndDate;
  397. this.exhibition.status = exhib.Status;
  398. this.exhibition.website = exhib.Website;
  399. this.exhibition.isRecommend = exhib.IsRecommend;
  400. this.exhibition.isLiked = "";
  401. this.exhibition.rating = "";
  402. this.exhibition.reviewCount = "";
  403. this.exhibition.exhibitors = exhib.ExhibitorCount;
  404. this.exhibition.visitors = exhib.VisitorCount;
  405. this.exhibition.internalexhibitors = exhib.IntVisitorCount;
  406. this.exhibition.intVisitors = exhib.IntVisitorCount;
  407. this.exhibition.area = exhib.ExhibSize;
  408. this.exhibition.showstatusid = "";
  409. this.exhibition.about = exhib.Intro;
  410. this.exhibition.profile = exhib.Profile;
  411. this.exhibition.description = exhib.Detail;
  412. this.exhibition.shortName = exhib.AbbreviatedName;
  413. this.exhibition.frequency = exhib.Frequency;
  414. this.exhibition.online = exhib.IsVirtualEvent;
  415. this.exhibition.organizers = exhib.Organizers;
  416. this.exhibition.videos = exhib.Videos;
  417. this.exhibition.gallery = exhib.Images;
  418. this.exhibition.venues = exhib.Venues;
  419. this.exhibition.categories = exhib.MainCategories;
  420. this.exhibition.subcategories = exhib.SubCategories;
  421. this.setSideBarList();
  422. this.setFavorite();
  423. }
  424. })
  425. .catch((err) => {
  426. console.log(err);
  427. });
  428. },
  429. getAdList() {
  430. this.ads = [{
  431. image: require('/assets/img/thems/Frame33.png')
  432. }, {
  433. image: require('/assets/img/thems/Frame33.png')
  434. }, {
  435. image: require('/assets/img/thems/Frame33.png')
  436. }]
  437. },
  438. setSideBarList() {
  439. if (this.relatedservicelist.length > 0) {
  440. this.fixBarList.push({ id: "relatedServices", title: "Related Services", show: true });
  441. }
  442. if (this.exhibition.about.length > 0 ) {
  443. this.fixBarList.push({ id: "about", title: "Intro", show: true });
  444. }
  445. if (this.exhibition.videos.length > 0 || this.exhibition.gallery.length > 0) {
  446. this.fixBarList.push({ id: "photoGallery", title: "Photo & Video Gallery", show: true });
  447. }
  448. if (this.exhibition.venues.length > 0) {
  449. this.fixBarList.push({ id: "venue", title: "Venue", show: true });
  450. }
  451. if (this.exhibition.profile) {
  452. this.fixBarList.push({ id: "exhibitProfile", title: "Exhibit Profile", show: true });
  453. }
  454. if (this.exhibition.description) {
  455. this.fixBarList.push({ id: "detailedDescription", title: "Detailed Description", show: true });
  456. }
  457. },
  458. introCheck(entries, observer, isIntersecting) {
  459. this.navControl.mobnav = !isIntersecting;
  460. },
  461. checkNavBlock(entries, observer, isIntersecting) {
  462. this.navControl.ad = isIntersecting;
  463. },
  464. navfix(entries, observer, isIntersecting) {
  465. this.navControl.nav = isIntersecting;
  466. },
  467. getFavorite() {
  468. this.favoriteSet.clear();
  469. if (this.$auth.loggedIn) {
  470. this.$axios.get(`/trending/api/Favorite/Favorites?Type=Exhibition`)
  471. .then((result) => {
  472. if(result && result.data && result.data.DATA && result.data.DATA.rel){
  473. let favoriteList = [];
  474. favoriteList = result.data.DATA.rel;
  475. favoriteList.forEach(item => {
  476. this.favoriteSet.add(item.ParentID);
  477. })
  478. }
  479. })
  480. .catch((err) => {
  481. console.log("getFavorite"+err);
  482. });
  483. }
  484. },
  485. setFavorite() {
  486. if (this.favoriteSet.size > 0 && this.$auth.loggedIn) {
  487. if (this.favoriteSet.has(this.exhibition.id)) {
  488. this.saved = true;
  489. }
  490. }
  491. },
  492. toggleFavorite() {
  493. if (this.saved) {
  494. this.saved = false;
  495. this.Favorite.IsFavorite = 'N';
  496. } else {
  497. this.saved = true;
  498. this.Favorite.IsFavorite = 'Y';
  499. }
  500. this.Favorite.Type = 'Exhibition';
  501. this.Favorite.ParentID = this.exhibition.id;
  502. if (this.$auth.loggedIn) {
  503. this.$axios
  504. .post(
  505. `/trending/api/Favorite/Favorite`, this.Favorite
  506. )
  507. .then((result) => {
  508. })
  509. .catch((err) => {
  510. console.log(err);
  511. });
  512. } else {
  513. this.$router.push(this.localePath("/user"));
  514. }
  515. },
  516. async getCategorySwiperList() {
  517. let langCode = this.$i18n.localeProperties["langQuery"];
  518. await this.$axios
  519. .get(
  520. `/service/category?lang_code=${langCode}`
  521. )
  522. .then((res) => {
  523. let categoryArray = [];
  524. let result = res.data;
  525. for (let i in result) {
  526. let obj = {
  527. ids: [result[i].id, result[i].service_category_id],
  528. lang_text: result[i].language_text[0].text
  529. }
  530. categoryArray.push(obj);
  531. }
  532. this.getCategory = categoryArray;
  533. })
  534. .catch((error) => console.log(error));
  535. },
  536. async getRelatedServiceList() {
  537. // &expo_id={this.$route.params.id}
  538. let vm = this;
  539. await this.$axios
  540. .get(
  541. `${this.apiUrl}/user-services/relative-services?counts=3&country=${this.exhibition.country.id}&city=${this.exhibition.city.id}&lang_code=${this.$i18n.localeProperties["langQuery"]}&expo_id=${this.$route.params.id}`
  542. )
  543. .then((res) => {
  544. this.relatedservicelist = res.data;
  545. })
  546. .catch((error) => console.log(error));
  547. },
  548. async getServiceCategory() {
  549. let langCode = this.$i18n.localeProperties["langQuery"];
  550. await this.$axios
  551. .get(
  552. `/service/category?lang_code=${langCode}`
  553. )
  554. .then((res) => {
  555. let categoryArray = [];
  556. let result = res.data;
  557. for (let i in result) {
  558. let obj = {
  559. ids: [result[i].id, result[i].service_category_id],
  560. lang_text: result[i].language_text[0].text
  561. }
  562. categoryArray.push(obj);
  563. }
  564. this.getservicecategory = categoryArray;
  565. })
  566. .catch((error) => console.log(error));
  567. },
  568. getAllService() {
  569. let vm = this;
  570. this.$axios
  571. .get(
  572. `${this.apiUrl}/user-services/relative-services?counts=3&country=${this.exhibition.country.id}&city=${this.exhibition.city.id}&lang_code=${this.$i18n.localeProperties["langQuery"]}&expo_id=${this.$route.params.id}`
  573. )
  574. .then((res) => {
  575. this.relatedservicelist = res.data;
  576. })
  577. .catch((error) => console.log(error));
  578. },
  579. getCategoryId(data) {
  580. this.getcategoryid = data;
  581. },
  582. testtest(data) {
  583. this.testcategory = data;
  584. this.serviceList();
  585. },
  586. serviceList() {
  587. this.$axios
  588. .get(
  589. `${this.apiUrl}/user-services/relative-services?counts=3&country=${this.exhibition.country.id}&city=${this.exhibition.city.id}&lang_code=${this.$i18n.localeProperties["langQuery"]}&service_category=${this.testcategory}&expo_id=${this.$route.params.id}`
  590. )
  591. .then((res) => {
  592. this.relatedservicelist = res.data;
  593. })
  594. .catch((error) => console.log(error));
  595. },
  596. checkRelatedService() {
  597. this.fixBarList = [
  598. { id: "highlightReview", title: "Highlight Review", show: false },
  599. { id: "relatedServices", title: "Related Services", show: false },
  600. {
  601. id: "photoGallery",
  602. title: "Photo & Video Gallery",
  603. show:
  604. this.exhibition.gallery.length > 0 ||
  605. this.exhibition.videos.length > 0
  606. ? true
  607. : false,
  608. },
  609. {
  610. id: "venue",
  611. title: "Venue",
  612. show: this.exhibition.venues.length > 0 ? true : false,
  613. },
  614. {
  615. id: "exhibitProfile",
  616. title: "Exhibit Profile",
  617. show: this.exhibition.profile ? true : false,
  618. },
  619. {
  620. id: "detailedDescription",
  621. title: "Detailed Description",
  622. show: this.exhibition.description ? true : false,
  623. },
  624. { id: "reviews", title: "Reviews", show: false },
  625. ];
  626. if (this.relatedservicelist.length > 0) {
  627. this.relatedserviceShow = true;
  628. this.fixBarList = [
  629. { id: "highlightReview", title: "Highlight Review", show: false },
  630. { id: "relatedServices", title: "Related Services", show: true },
  631. {
  632. id: "photoGallery",
  633. title: "Photo & Video Gallery",
  634. show:
  635. this.exhibition.gallery.length > 0 ||
  636. this.exhibition.videos.length > 0
  637. ? true
  638. : false,
  639. },
  640. {
  641. id: "venue",
  642. title: "Venue",
  643. show: this.exhibition.venues.length > 0 ? true : false,
  644. },
  645. {
  646. id: "exhibitProfile",
  647. title: "Exhibit Profile",
  648. show: this.exhibition.profile ? true : false,
  649. },
  650. {
  651. id: "detailedDescription",
  652. title: "Detailed Description",
  653. show: this.exhibition.description ? true : false,
  654. },
  655. { id: "reviews", title: "Reviews", show: false },
  656. ];
  657. }
  658. }
  659. },
  660. };
  661. </script>
  662. <style lang="scss" scoped>
  663. </style>