block_solve.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <script lang='ts' setup>
  2. import solutionEcommerce from '~/assets/images/ecommerce_img.png'
  3. import solutionBrands from '~/assets/images/brands_img.png'
  4. import solutionRetailers from '~/assets/images/retailers_img.png'
  5. import solutionEcommerce01 from '~/assets/images/solutions_ecommerce01.png'
  6. import solutionEcommerce02 from '~/assets/images/solutions_ecommerce02.png'
  7. import solutionEcommerce03 from '~/assets/images/solutions_ecommerce03.png'
  8. import solutionEcommerce04 from '~/assets/images/solutions_ecommerce04.png'
  9. import solutionBrand01 from '~/assets/images/solutions_brand01.png'
  10. import solutionBrand02 from '~/assets/images/solutions_brand02.png'
  11. import solutionBrand03 from '~/assets/images/solutions_brand03.png'
  12. import solutionBrand04 from '~/assets/images/solutions_brand04.png'
  13. import solutionRetailers01 from '~/assets/images/solutions_retailers01.png'
  14. import solutionRetailers02 from '~/assets/images/solutions_retailers02.png'
  15. import solutionRetailers03 from '~/assets/images/solutions_retailers03.png'
  16. import solutionRetailers04 from '~/assets/images/solutions_retailers04.png'
  17. import { useUserStore } from '@/stores/modules/user'
  18. const { openLoginModal } = useLoginModal()
  19. const userStore = useUserStore()
  20. const { isLogin } = storeToRefs(userStore)
  21. const list = ref([
  22. {
  23. key: 'ecommerce',
  24. title: 'Ecommerce',
  25. description: 'Scale Smarter with Viral-Ready Products for Online Growth',
  26. masterImg: solutionEcommerce,
  27. list: [
  28. {
  29. title: 'Real-Time Trend Curation',
  30. img: solutionEcommerce01,
  31. subTitle:
  32. 'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
  33. },
  34. {
  35. img: solutionEcommerce02,
  36. title: 'Low MOQ Limits',
  37. subTitle:
  38. 'With zero MOQ, you can test products risk-free and scale only what sells. Perfect for agile sellers and fast-moving trends!',
  39. },
  40. {
  41. img: solutionEcommerce03,
  42. title: 'Flexible Fulfillment Options',
  43. subTitle:
  44. 'Whether you need dropshipping, bulk shipping, or FBA Prep, we adapt to your business with reliable logistics solutions.',
  45. },
  46. {
  47. img: solutionEcommerce04,
  48. title: 'Winning Product Portfolios',
  49. subTitle:
  50. 'Our pre-built product bundles and curated collections combine complementary bestsellers to boost average order value.',
  51. },
  52. ],
  53. },
  54. {
  55. key: 'brands',
  56. title: 'Brands & Distributors',
  57. description:
  58. 'Power Your Product Line with Trend Intelligence & Agile Supply',
  59. masterImg: solutionBrands,
  60. list: [
  61. {
  62. title: 'OEM/ODM Trend Support',
  63. img: solutionBrand01,
  64. subTitle:
  65. 'We provide trend-based design, packaging, and product development to help brands create unique, market-driven products.',
  66. },
  67. {
  68. img: solutionBrand02,
  69. title: 'Co-Branded Development',
  70. subTitle:
  71. 'Quick-turn co-branded collections to help brands launch exclusive, limited-edition products and increase market impact.',
  72. },
  73. {
  74. img: solutionBrand03,
  75. title: 'Flexible Logistic Solution',
  76. subTitle:
  77. 'Whether it’s bulk shipments, mixed containers, our flexible logistics solutions adapt to your business model and market goals.',
  78. },
  79. {
  80. img: solutionBrand04,
  81. title: 'Exclusive Channel Protection',
  82. subTitle:
  83. 'We protect your brand with exclusive regional rights, limited distribution agreements, and secure your market position.',
  84. },
  85. ],
  86. },
  87. {
  88. key: 'retailers',
  89. title: 'Retailers & Chain Stores',
  90. description: 'Upgrade Your Shelves with Trendy, High-Margin Products',
  91. masterImg: solutionRetailers,
  92. list: [
  93. {
  94. title: 'Ready-to-Display Portfolios',
  95. img: solutionRetailers01,
  96. subTitle:
  97. 'Curated product bundles that align with current trends, ready for effortless shelf display and enhanced retail appeal.',
  98. },
  99. {
  100. img: solutionRetailers02,
  101. title: 'Trend-Aligned Launch Plan',
  102. subTitle:
  103. 'Tailored product launch plans based on market cycles to create a differentiated product portfolio that engages customers.',
  104. },
  105. {
  106. img: solutionRetailers03,
  107. title: 'Store Display Solution',
  108. subTitle:
  109. 'Strategic display guides that show what to place where — helping your team position products by zone and boost visual appeal.',
  110. },
  111. {
  112. img: solutionRetailers04,
  113. title: 'Go-to Market Support',
  114. subTitle:
  115. 'Customizable marketing assets to support both online and offline promotions — helping you boost visibility and drive sales.',
  116. },
  117. ],
  118. },
  119. ])
  120. const solution = ref('ecommerce')
  121. const solutionList = computed(() => {
  122. return list.value.find((item: any) => item.key === solution.value)?.list
  123. })
  124. </script>
  125. <template>
  126. <div class="w-1200-auto ">
  127. <div class="flex">
  128. <div v-for="item in list" :key="item.key" :class="solution === item.key ? '!bg-#9B6CFF !text-#fff' : ''" class="flex-1 bg-#F0F0F0 text-#333 py-20px text-center custom-title-font hover:text-#9B6CFF transition-all duration-300 cursor-pointer" @click="solution = item.key">
  129. {{ item.title }}
  130. </div>
  131. </div>
  132. <div class="py-120px text-center">
  133. <h2 class="text-36px fw-800 text-#333 !mb-20px">
  134. EJET Spark For <span class="custom-title-bg04"> {{ list.find(item => item.key === solution)?.title }} </span>
  135. </h2>
  136. <div class="lh-24px text-#999 text-22px mb-80px">
  137. {{ list.find(item => item.key === solution)?.description }}
  138. </div>
  139. <div class="flex gap-60px">
  140. <img
  141. :src="list.find((item) => item.key === solution)?.masterImg"
  142. alt=""
  143. class="w-420px h-520px object-cover"
  144. srcset=""
  145. >
  146. <div>
  147. <div class="flex flex-col gap-34px text-left">
  148. <div v-for="item in solutionList" :key="item.key" class="flex">
  149. <img :src="item.img" class="w-40px h-40px mr-20px" alt="">
  150. <div>
  151. <h3 class="text-18px fw-800 text-#333 !mb-10px custom-title-font">
  152. {{ item.title }}
  153. </h3>
  154. <div class="text-#666 lh-24px">
  155. {{ item.subTitle }}
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <div
  161. class="w-154px h-40px lh-40px text-center ml-60px mt-60px b-rd-6px text-14px text-#9B6CFF fw-bold b-solid b-1px b-#9B6CFF cursor-pointer hover:bg-#9B6CFF hover:text-#fff"
  162. >
  163. <span v-if="!isLogin" @click="openLoginModal">
  164. Sign In
  165. </span>
  166. <nuxt-link v-else to="/categories">
  167. view catalogs
  168. </nuxt-link>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. </template>
  175. <style lang='less' scoped>
  176. </style>