Browse Source

feat: 目录册集合页+导航页+solutions数据联调完成

chenpeng 4 ngày trước cách đây
mục cha
commit
63fe403716

+ 3 - 0
api/model/url.ts

@@ -1,7 +1,10 @@
 export enum Api {
   CategoryList = '/client-s003/category/catalogue',
+  CategoryDetail = '/client-s003/category/detail',
+  CategoryCatalogueList = '/client-s003/s003ProductCatalogue/queryPageListBySlug',
   CatalogueList = '/client-s003/s003ProductCatalogue/list',
   BlogsList = '/client-s003/s003OperatorContent/list',
   BlogsCategoryList = '/client-s003/s003OperatorContent/category/content',
   BlogDetail = '/client-s003/s003OperatorContent/detail',
+
 }

+ 13 - 0
assets/icons/flower.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="44" height="44"
+    viewBox="0 0 44 44">
+    <g>
+        <g>
+            <ellipse cx="22" cy="22" rx="22" ry="22" style="fill: #DACDFB" fill="#DACDFB" fill-opacity="1" />
+        </g>
+        <g>
+            <path
+                d="M35.704022644042965,20.159577197265627L27.88512264404297,20.159577197265627L33.41402264404297,14.638617197265624L30.22542264404297,11.454527197265625L24.696522644042968,16.975527197265624L24.696522644042968,9.167877197265625L20.18852264404297,9.167877197265625L20.18852264404297,16.975527197265624L14.65960264404297,11.454527197265625L11.470952644042969,14.638617197265624L16.99986264404297,20.159577197265627L9.181022644042969,20.159577197265627L9.181022644042969,24.661077197265627L16.99986264404297,24.661077197265627L11.470952644042969,30.182077197265624L14.65960264404297,33.36617719726563L20.18852264404297,27.845177197265624L20.18852264404297,35.652877197265624L24.696522644042968,35.652877197265624L24.696522644042968,27.845177197265624L30.22542264404297,33.36617719726563L33.41402264404297,30.182077197265624L27.88512264404297,24.661077197265627L35.704022644042965,24.661077197265627L35.704022644042965,20.159577197265627Z"
+                fill="#FFFF66" />
+        </g>
+    </g>
+</svg>

+ 1 - 0
assets/icons/starBlue.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="44" height="46" viewBox="0 0 44 46"><g><path d="M44,23C27.6702,26.2774,25.1298,28.9333,22,46C18.8702,28.9333,16.3298,26.2774,0,23C16.3298,19.7279,18.8702,17.0721,22,0C25.1349,17.0721,27.6753,19.7279,44,23Z" fill="#1AC18E" fill-opacity="1"/></g></svg>

BIN
assets/images/brands_img.png


BIN
assets/images/catalogue_bg.png


BIN
assets/images/catalogue_bg_img.png


BIN
assets/images/category_catalogue_banner.png


BIN
assets/images/ecommerce_img.png


BIN
assets/images/retailers_img.png


BIN
assets/images/solutions_banner.png


+ 2 - 2
components/business/categories/comp/temp1.vue

@@ -9,7 +9,7 @@ defineProps({
     <div class="pos-relative">
       <nuxt-link :to="{ name: 'categories-slug', params: { slug: item?.slug } }">
         <div class="px-30px py-10px bg-#F3F4FB shadow-item b-rd-6px hover:bg-#EAE5FA">
-          <img :src="item.img" alt="" srcset="" class="w-100% h-240px  object-cover">
+          <img :src="item.bannerImg" srcset="" class="w-100% h-240px  object-contain">
         </div>
         <h3
           class="!mb-15px !mt-30px fw-800 text-24px text-#333 line-clamp-2 custom-title-font"
@@ -17,7 +17,7 @@ defineProps({
           {{ item.title }}
         </h3>
         <div class="text-16px text-#999 lh-22px line-clamp-2">
-          {{ item.subTitle }}
+          {{ item.subhead }}
         </div>
       </nuxt-link>
     </div>

+ 2 - 2
components/business/categories/comp/temp2.vue

@@ -9,7 +9,7 @@ defineProps({
     <div class="pos-relative">
       <nuxt-link :to="{ name: 'categories-slug', params: { slug: item?.slug } }">
         <div class="p-50px bg-#F3F4FB shadow-item b-rd-6px hover:bg-#EAE5FA">
-          <img :src="item.img" alt="" srcset="" class="w-300 h-300px  object-cover">
+          <img :src="item.bannerImg" alt="" srcset="" class="w-300 h-300px object-contain">
         </div>
         <h3
           class="!mb-15px !mt-30px fw-800 text-24px text-#333 line-clamp-2 custom-title-font"
@@ -17,7 +17,7 @@ defineProps({
           {{ item.title }}
         </h3>
         <div class="text-16px text-#999 lh-22px line-clamp-2">
-          {{ item.subTitle }}
+          {{ item.subhead }}
         </div>
       </nuxt-link>
     </div>

+ 24 - 77
components/business/categories/list.vue

@@ -3,77 +3,25 @@
 <script lang="ts" setup>
 import templateTwo from './comp/temp2.vue'
 import templateOne from './comp/temp1.vue'
+import { ConstKeys } from '~/enums/const-enums'
+import { Api } from '@/api/model/url'
 
-const list_column_one = [
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    type: 'A',
-    slug: 'test',
-  },
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    slug: 'test2',
-    type: 'B',
-  },
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    slug: 'test3',
-    type: 'A',
-  },
-]
-const list_column_two = [
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    type: 'B',
-    slug: 'test',
-  },
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    slug: 'test2',
-    type: 'B',
-  },
-]
-const list_column_three = [
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    type: 'A',
-    slug: 'test',
-  },
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    slug: 'test2',
-    type: 'B',
-  },
-  {
-    title: 'Real-Time Trend Curation',
-    subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
-    img: 'https://picsum.photos/300/300',
-    slug: 'test3',
-    type: 'A',
-  },
-]
+const categoryList = ref<any>([])
+const list_column_one = ref<any>([])
+const list_column_two = ref<any>([])
+const list_column_three = ref<any>([])
+
+const requestUrl = `${ConstKeys.DOMAINDEV}${Api.CategoryList}`
+const { data, pending, error, refresh } = await useAsyncData(
+  'category-catalogue',
+  () => $fetch(`${requestUrl}`, { params: { all: true } }),
+)
+categoryList.value = data.value?.result || []
+// 获取categoryList的前3个元素给到list_column_one,并且不改变原数组categoryList
+list_column_one.value = categoryList.value.slice(0, 3)
+list_column_two.value = categoryList.value.slice(3, 5)
+list_column_three.value = categoryList.value.slice(5, 8)
+console.log('categoryList', categoryList.value, list_column_one.value, list_column_two.value, list_column_three.value)
 </script>
 
 <template>
@@ -88,20 +36,19 @@ const list_column_three = [
       <div class="flex gap-40px text-left">
         <div class="flex flex-col gap-40px flex-1">
           <div v-for="(item, index) in list_column_one" :key="index">
-            <template-one v-if="item.type === 'A'" :item />
-            <template-two v-if="item.type === 'B'" :item />
+            <template-one v-if="index % 2 === 0" :item />
+            <template-two v-else :item />
           </div>
         </div>
         <div class="flex flex-col gap-40px flex-1">
           <div v-for="(item, index) in list_column_two" :key="index">
-            <template-one v-if="item.type === 'A'" :item />
-            <template-two v-if="item.type === 'B'" :item />
+            <template-two :item />
           </div>
         </div>
         <div class="flex flex-col gap-40px flex-1">
           <div v-for="(item, index) in list_column_three" :key="index">
-            <template-one v-if="item.type === 'A'" :item />
-            <template-two v-if="item.type === 'B'" :item />
+            <template-one v-if="index % 2 === 0" :item />
+            <template-two v-else :item />
           </div>
         </div>
       </div>
@@ -110,5 +57,5 @@ const list_column_three = [
 </template>
 
 <style lang="less" scoped>
- 
+
 </style>

+ 49 - 34
components/business/solutions/block_solve.vue

@@ -1,69 +1,83 @@
 <script lang='ts' setup>
-import solutionIcon01 from '~/assets/images/solutions_icon01.png'
-import solutionIcon02 from '~/assets/images/solutions_icon02.png'
-import solutionIcon03 from '~/assets/images/solutions_icon03.png'
-import solutionIcon04 from '~/assets/images/solutions_icon04.png'
+import solutionEcommerce from '~/assets/images/ecommerce_img.png'
+import solutionBrands from '~/assets/images/brands_img.png'
+import solutionRetailers from '~/assets/images/retailers_img.png'
+import solutionEcommerce01 from '~/assets/images/solutions_ecommerce01.png'
+import solutionEcommerce02 from '~/assets/images/solutions_ecommerce02.png'
+import solutionEcommerce03 from '~/assets/images/solutions_ecommerce03.png'
+import solutionEcommerce04 from '~/assets/images/solutions_ecommerce04.png'
+import solutionBrand01 from '~/assets/images/solutions_brand01.png'
+import solutionBrand02 from '~/assets/images/solutions_brand02.png'
+import solutionBrand03 from '~/assets/images/solutions_brand03.png'
+import solutionBrand04 from '~/assets/images/solutions_brand04.png'
+import solutionRetailers01 from '~/assets/images/solutions_retailers01.png'
+import solutionRetailers02 from '~/assets/images/solutions_retailers02.png'
+import solutionRetailers03 from '~/assets/images/solutions_retailers03.png'
+import solutionRetailers04 from '~/assets/images/solutions_retailers04.png'
 
 const list = ref([
   {
     key: 'ecommerce',
     title: 'Ecommerce',
     description: 'Scale Smarter with Viral-Ready Products for Online Growth',
+    masterImg: solutionEcommerce,
     list: [
       {
         title: 'Real-Time Trend Curation',
-        img: solutionIcon01,
+        img: solutionEcommerce01,
         subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
+          'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
       },
       {
-        img: solutionIcon02,
-        title: 'Real-Time Trend Curation',
+        img: solutionEcommerce02,
+        title: 'Low MOQ Limits',
         subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
+          'With zero MOQ, you can test products risk-free and scale only what sells. Perfect for agile sellers and fast-moving trends!',
       },
       {
-        img: solutionIcon03,
-        title: 'Real-Time Trend Curation',
+        img: solutionEcommerce03,
+        title: 'Flexible Fulfillment Options',
         subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
+          'Whether you need dropshipping, bulk shipping, or FBA Prep, we adapt to your business with reliable logistics solutions.',
       },
       {
-        img: solutionIcon04,
-        title: 'Real-Time Trend Curation',
+        img: solutionEcommerce04,
+        title: 'Winning Product Portfolios',
         subTitle:
-      'Our team constantly monitors market shifts, viral demand, and emerging bestsellers to deliver high-potential products to you.',
+          'Our pre-built product bundles and curated collections combine complementary bestsellers to boost average order value.',
       },
     ],
   },
   {
     key: 'brands',
     title: 'Brands & Distributors',
-    description: 'Power Your Product Line with Trend Intelligence & Agile Supply',
+    description:
+      'Power Your Product Line with Trend Intelligence & Agile Supply',
+    masterImg: solutionBrands,
     list: [
       {
         title: 'OEM/ODM Trend Support',
-        img: solutionIcon01,
+        img: solutionBrand01,
         subTitle:
-      'We provide trend-based design, packaging, and product development to help brands create unique, market-driven products.',
+          'We provide trend-based design, packaging, and product development to help brands create unique, market-driven products.',
       },
       {
-        img: solutionIcon02,
+        img: solutionBrand02,
         title: 'Co-Branded Development',
         subTitle:
-      'Quick-turn co-branded collections to help brands launch exclusive, limited-edition products and increase market impact.',
+          'Quick-turn co-branded collections to help brands launch exclusive, limited-edition products and increase market impact.',
       },
       {
-        img: solutionIcon03,
+        img: solutionBrand03,
         title: 'Flexible Logistic Solution',
         subTitle:
-      'Whether it’s bulk shipments, mixed containers, our flexible logistics solutions adapt to your business model and market goals.',
+          'Whether it’s bulk shipments, mixed containers, our flexible logistics solutions adapt to your business model and market goals.',
       },
       {
-        img: solutionIcon04,
+        img: solutionBrand04,
         title: 'Exclusive Channel Protection',
         subTitle:
-      'We protect your brand with exclusive regional rights, limited distribution agreements, and secure your market position.',
+          'We protect your brand with exclusive regional rights, limited distribution agreements, and secure your market position.',
       },
     ],
   },
@@ -71,30 +85,31 @@ const list = ref([
     key: 'retailers',
     title: 'Retailers & Chain Stores',
     description: 'Upgrade Your Shelves with Trendy, High-Margin Products',
+    masterImg: solutionRetailers,
     list: [
       {
         title: 'Ready-to-Display Portfolios',
-        img: solutionIcon01,
+        img: solutionRetailers01,
         subTitle:
-      'Curated product bundles that align with current trends, ready for effortless shelf display and enhanced retail appeal.',
+          'Curated product bundles that align with current trends, ready for effortless shelf display and enhanced retail appeal.',
       },
       {
-        img: solutionIcon02,
+        img: solutionRetailers02,
         title: 'Trend-Aligned Launch Plan',
         subTitle:
-      'Tailored product launch plans based on market cycles to create a differentiated product portfolio that engages customers.',
+          'Tailored product launch plans based on market cycles to create a differentiated product portfolio that engages customers.',
       },
       {
-        img: solutionIcon03,
+        img: solutionRetailers03,
         title: 'Store Display Solution',
         subTitle:
-      'Strategic display guides that show what to place where — helping your team position products by zone and boost visual appeal.',
+          'Strategic display guides that show what to place where — helping your team position products by zone and boost visual appeal.',
       },
       {
-        img: solutionIcon04,
+        img: solutionRetailers04,
         title: 'Go-to Market Support',
         subTitle:
-      'Customizable marketing assets to support both online and offline promotions — helping you boost visibility and drive sales.',
+          'Customizable marketing assets to support both online and offline promotions — helping you boost visibility and drive sales.',
       },
     ],
   },
@@ -121,9 +136,9 @@ const solutionList = computed(() => {
       </div>
       <div class="flex gap-60px">
         <img
-          src="~/assets/images/solutions_img02.png"
+          :src="list.find((item) => item.key === solution)?.masterImg"
           alt=""
-          class="w-420px h-520px"
+          class="w-420px h-520px object-cover"
           srcset=""
         >
         <div>

+ 5 - 1
components/common/block/catalogs.vue

@@ -29,7 +29,11 @@ const { data, pending, error, refresh } = await useAsyncData(
   'catalogue-list',
   () => $fetch(requestUrl, { params }),
 )
-catalogueList.value = data.value?.result?.records || []
+
+watch(() => data.value, (newValue) => {
+  if (newValue?.result)
+    catalogueList.value = newValue?.result?.records || []
+}, { immediate: true })
 
 function onVerticalSwiper(swiper: any) {
   swiperVertical.value = swiper

+ 1 - 0
components/common/loginAndDownload/index.vue

@@ -80,6 +80,7 @@ onUnmounted(() => {
           </div>
           <div
             v-if="downloadCatalog.blogSlug && (emailStep === 0 || emailStep === 4)"
+            @click="isLoginAndDownloadOpen = false"
             class="w-110px h-32px lh-32px text-center b-rd-6px text-14px text-#9B6CFF fw-bold b-solid b-1px b-#9B6CFF cursor-pointer hover:bg-#9B6CFF hover:text-#fff"
           >
             <NuxtLink :to="`/blog/${downloadCatalog.blogSlug}`">

+ 2 - 2
components/common/navigation/index.vue

@@ -95,12 +95,12 @@ function toCategories() {
                 class="cursor-pointer"
               >
                 <NuxtLink
-                  :to="`/categories/${item.slug}`"
+                  :to="`/blog/${item.blogSlug}`"
                 >
                   <img
                     :src="item.coverImg"
                     :alt="item.coverAlt"
-                    class="w-220px h-136px mb-10px b-rd-4px"
+                    class="w-220px h-136px object-cover mb-10px b-rd-4px"
                   >
                   <div class="text-14px fw-800 custom-title-font text-#333 line-clamp-1">
                     {{ item.title }}

+ 66 - 41
pages/categories/[slug].vue

@@ -1,45 +1,27 @@
 <script lang='ts' setup>
 import { useCommonStore } from '@/stores/modules/common'
-import { Condition } from '@/enums/const-enums'
+import { ConstKeys } from '~/enums/const-enums'
+import { Api } from '@/api/model/url'
 
+const route = useRoute()
 const commonStore = useCommonStore()
-const list = [
-  {
-    id: '1930872642297643010',
-    title: 'Stationary & Office Supplies',
-    subhead: 'Discover bestsellers and fresh arrivals tailored to your niche.',
-    coverImg: 'https://picsum.photos/560/310',
-    coverAlt: 'https://picsum.photos/560/310',
-    pdf: 'https://static.ejetselection.com/temp/baozhen_1748937135247.pdf',
-    viewPdf: 'https://static.ejetselection.com/temp/baozhen_1748937135247.pdf',
-    // pdfUrl: 'https://static.ejetselection.com/temp/导入模板2222_1736660213488.xlsx',
-    downloadCondition: Condition.DOWNLOAD, // 下载条件 1是登录后下载 2是登录后申请下载
-    blogSlug: 'stationary-office-supplies',
-  },
-  {
-    id: '1934486796128428033',
-    billNo: 'ML000004',
-    title: '目录册标题',
-    subhead: '副标题',
-    category: '1933455277679104002',
-    downloadCondition: '1',
-    trend: '1',
-    state: '1',
-    coverImg: 'https://static.ejetselection.com/temp/微信图片_20250530110533_1750052537617.jpg',
-    coverAlt: 'alt',
-    viewPdf: 'https://static.ejetselection.com/temp/新建DOCX文档_1750052562044.pdf',
-    pdf: 'https://static.ejetselection.com/temp/新建DOCX文档_1750052566275.pdf',
-    createBy: '王亮',
-    createTime: '2025-06-16 13:42:48',
-    updateBy: '王亮',
-    updateTime: '2025-06-16 13:43:00',
-    blogSlug: null,
-    category_dictText: 'TREND TOYS',
-    category_dictColor: 'null',
-  },
-]
-const { openLoginAndDownloadModal } = useLoginAndDownLoadModal()
+const list = ref<any>([])
+
+const slug = route.params.slug
+const { data: res } = await useAsyncData(
+  'category-detail',
+  () =>
+    $fetch(`${ConstKeys.DOMAINDEV}${Api.CategoryDetail}`, { params: { slug } }),
+)
+const seoData = res.value?.result
+const { data: res2 } = await useAsyncData(
+  'category-catalogue-list',
+  () =>
+    $fetch(`${ConstKeys.DOMAINDEV}${Api.CategoryCatalogueList}`, { params: { slug } }),
+)
+list.value = res2.value?.result?.records || []
 
+const { openLoginAndDownloadModal } = useLoginAndDownLoadModal()
 async function clickLoginAndDownload(item: any) {
   try {
     commonStore.setDownloadCatalog(item)
@@ -51,15 +33,51 @@ async function clickLoginAndDownload(item: any) {
     console.log(error)
   }
 }
+const firstTitle = computed(() => {
+  return seoData?.contentTitle ? handleTitle(seoData.contentTitle, 1) : ''
+})
+const secondTitle = computed(() => {
+  return seoData?.contentTitle ? handleTitle(seoData.contentTitle, 2) : ''
+})
+
+function handleTitle(title: string | undefined, position: number) {
+  if (!title)
+    return ''
+  // 先判断标题中是否带有&,获取第一个&之前的数据和之后的数据
+  let firstPart = ''
+  let secondPart = ''
+  const index = title.indexOf('&')
+  if (index !== -1) {
+    firstPart = title.slice(0, index).trim()
+    secondPart = title.slice(index + 1).trim()
+  }
+  else {
+    // 如果没有&,返回第一个空格之前的数据和之后的数据
+    const spaceIndex = title.indexOf(' ')
+    if (spaceIndex !== -1) {
+      firstPart = title.slice(0, spaceIndex).trim()
+      secondPart = title.slice(spaceIndex + 1).trim()
+    }
+  }
+  return position === 1 ? firstPart : secondPart || ''
+}
 </script>
 
 <template>
   <div>
-    <div class=" bg-#0F0820">
-      <div class="header w-1200-auto text-center flex items-center justify-center h-600px  bg-no-repeat bg-center" style="background-image: url('https://picsum.photos/420/420')">
+    <div class=" bg-#0F0820 header">
+      <div class=" w-1200-auto pos-relative text-center flex items-center justify-start h-600px  bg-no-repeat bg-center">
         <h1 class="text-58px fw-800 text-#fff ls-2 custom-title-font">
-          STATIONARY & OFFICE SUPPLIES
+          <span class="flex items-center">
+            {{ firstTitle }}<svgo-flower class="w-44px h-44px !text-#FFFF66 ml-20px" />
+          </span>
+          <span class="flex items-center">
+            <svgo-star-blue class="w-44px h-44px text-#1AC18E mr-20px" /> {{ secondTitle }}
+          </span>
         </h1>
+        <div class="pos-absolute right-0 bottom-76px w-426px h-340px header-img-bg flex justify-center items-center">
+          <img :src="seoData.bannerImg" alt="" class="w-full h-390px object-contain mb-40px">
+        </div>
       </div>
     </div>
     <div class="py-120px w-1200-auto text-center">
@@ -83,6 +101,13 @@ async function clickLoginAndDownload(item: any) {
 
 <style lang='less' scoped>
 .header{
-  background-position: 50% 75%;
+  background-image: url('@/assets/images/catalogue_bg.png');
+  background-position: center center;
+  background-size: cover;
+  .header-img-bg{
+    background-image: url('@/assets/images/catalogue_bg_img.png');
+    background-size: cover;
+    background-position: center;
+  }
 }
 </style>

+ 6 - 6
pages/categories/index.vue

@@ -1,14 +1,13 @@
 <script lang='ts' setup>
+
 </script>
 
 <template>
-  <div class="bg-#0F0820">
-    <div class="header w-1200-auto flex items-center justify-center text-center h-600px  bg-no-repeat bg-center" style="background-image: url('https://picsum.photos/600/600')">
+  <div class="bg-#0F0820 header">
+    <div class=" w-1200-auto flex items-end justify-center text-center h-600px pb-110px">
       <div>
         <h1 class="text-58px fw-800 text-#fff ls-2 custom-title-font">
-          Discover, Download,
-        </h1>
-        <h1 class="text-58px fw-800 text-#9B6CFF ls-2 !mt-10px custom-title-font">
+          Discover, Download,<br>
           Delight!
         </h1>
         <el-button class="mt-30px !bg-#fff !text-#9B6CFF !w-160px !h-40px !b-0px !b-rd-200px" round>
@@ -26,6 +25,7 @@
 
 <style lang='less' scoped>
 .header{
-  background-position-x: right;
+  background-image: url('@/assets/images/category_catalogue_banner.png');
+  background-position: center -20px;
 }
 </style>

+ 1 - 1
pages/solutions.vue

@@ -19,7 +19,7 @@
             </nuxt-link>
           </el-button>
         </div>
-        <img src="https://picsum.photos/440/440" class="w-440px h-440px" alt="">
+        <img src="@/assets/images/solutions_banner.png" class="w-440px h-440px" alt="">
       </div>
     </div>
     <business-solutions-block_solve />