3 Commits 22d573555d ... 52352c5ebd

Author SHA1 Message Date
  xiaokuang 52352c5ebd 冲突合并 4 months ago
  xiaokuang 466c9deffd 提交 4 months ago
  xiaokuang ee1469bded 提交 4 months ago
5 changed files with 651 additions and 547 deletions
  1. 2 1
      api/index.js
  2. 70 59
      pages/exhibitor/exhibit.vue
  3. 78 65
      pages/exhibitor/index.vue
  4. 406 349
      pages/index/home.vue
  5. 95 73
      pages/user/index.vue

+ 2 - 1
api/index.js

@@ -2,4 +2,5 @@ import { get, post, link, upload } from '@/utils/request'
 
 //获取首页内容
 export const getDashboardInfo = get('/api/global/miniprog-index')
-export const getBuoyInfo = get('/api/global/float')
+export const getBuoyInfo = get('/api/global/float')
+export const getAdInfo = get('/api/ad/list')

+ 70 - 59
pages/exhibitor/exhibit.vue

@@ -1,61 +1,55 @@
 <template>
-  <page-layout class="exhibit-index">
-    <nav-bar title="展品信息" @init="onInitNavbar"></nav-bar>
-    <u-scroll-view>
-      <view class="main-container">
-        <!-- <view class="exhibitor-filter">
-          <view>
-            <view class="exhibitor-filter-label">展馆号</view>
-            <u-dropdown-select ref="select1" v-model="categoryId" placeholder="选择展馆号" :options="categories" @dropdown="onSelectDropdown(1)" @change="searchList()"/>
-          </view>
-          <view>
-            <view class="exhibitor-filter-label">产品类别</view>
-            <u-dropdown-select ref="select2" v-model="searchCategoryId" placeholder="选择产品类别" :options="categories" @dropdown="onSelectDropdown(2)" @change="searchList()" />
-          </view>
-          <view>
-            <view class="exhibitor-filter-label">应用领域</view>
-            <u-dropdown-select  ref="select3" v-model="searchApplicationAreas" placeholder="选择应用领域" :options="applicationAreass" @dropdown="onSelectDropdown(3)" @change="searchList()"/>
-          </view>
-        </view> -->
-        <u-search v-model="searchKeyword" placeholder="搜索展商 / 展品名称 / 会议" @search="onSearch" />
-        <view class="select-box">
-          <view class="select-title item-title">
-            筛选
-          </view>
-          <view class="select-list">
-            <u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="exhibit-dropdown" :children="true"
-                      @change-event="searchList()"></u-select>
-            <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="exhibit-dropdown2"
-                      @change-event="searchList()"></u-select>
-          </view>
-          <view class="select-search-btn" @click="searchList()">搜索</view>
-        </view>
-        <view class="ad-space">
-          <image
-              src="https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200"
-              mode="aspectFill" />
-        </view>
-        <van-empty v-if="exhibitList.length === 0" description="暂无数据" />
-        <view v-else class="exhibit-list exhibitor-list">
-          <template v-for="(item, index) in exhibitList">
-            <exhibit-item :item="item" :key="index" :pollShow="pollShow.product_poll_show" @share="onShare"
-                          @updateItemValue="updateItemValue()" />
-          </template>
-        </view>
-        <u-pagination :pageSize="exhibitParams.page_size" :total="total"
-                      @page-change="handlePageChange()" v-if="total>0"></u-pagination>
-        <disclaimer-text></disclaimer-text>
-      </view>
-    </u-scroll-view>
-    <contact-us :show.sync="showContactUs" :qrcode_url="q_url" />
-    <float-button @custom-event="updateContactStatus()"></float-button>
-    <van-dialog id="van-dialog" />
-    <u-share-action-sheet :show.sync="showShare" :show-info="shareInfo" />
-  </page-layout>
-<!--	<view class="exhibit-index exhibitor-index">
-
-	</view>-->
-</template>
+	<page-layout class="exhibit-index">
+		<nav-bar title="展品信息" @init="onInitNavbar"></nav-bar>
+		<u-scroll-view>
+			<view class="main-container">
+				<!-- <view class="exhibitor-filter">
+					<view>
+						<view class="exhibitor-filter-label">展馆号</view>
+						<u-dropdown-select ref="select1" v-model="categoryId" placeholder="选择展馆号" :options="categories" @dropdown="onSelectDropdown(1)" @change="searchList()"/>
+					</view>
+					<view>
+						<view class="exhibitor-filter-label">产品类别</view>
+						<u-dropdown-select ref="select2" v-model="searchCategoryId" placeholder="选择产品类别" :options="categories" @dropdown="onSelectDropdown(2)" @change="searchList()" />
+					</view>
+					<view>
+						<view class="exhibitor-filter-label">应用领域</view>
+						<u-dropdown-select  ref="select3" v-model="searchApplicationAreas" placeholder="选择应用领域" :options="applicationAreass" @dropdown="onSelectDropdown(3)" @change="searchList()"/>
+					</view>
+				</view> -->
+				<u-search v-model="searchKeyword" placeholder="搜索展商 / 展品名称 / 会议" @search="onSearch" />
+				<view class="select-box">
+					<view class="select-title item-title">
+						筛选
+					</view>
+					<view class="select-list">
+						<u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="exhibit-dropdown" :children="true"
+							@change-event="searchList()"></u-select>
+						<u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="exhibit-dropdown2"
+							@change-event="searchList()"></u-select>
+					</view>
+					<view class="select-search-btn" @click="searchList()">搜索</view>
+				</view>
+				<view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
+					<image :src="adInfo.ad_file" />
+				</view>
+				<van-empty v-if="exhibitList.length === 0" description="暂无数据" />
+				<view v-else class="exhibit-list exhibitor-list">
+					<template v-for="(item, index) in exhibitList">
+						<exhibit-item :item="item" :key="index" :pollShow="pollShow.product_poll_show" @share="onShare"
+							@updateItemValue="updateItemValue()" />
+					</template>
+				</view>
+				<u-pagination :pageSize="exhibitParams.page_size" :total="total"
+					@page-change="handlePageChange()" v-if="total>0"></u-pagination>
+				<disclaimer-text></disclaimer-text>
+			</view>
+		</u-scroll-view>
+		<contact-us :show.sync="showContactUs" :qrcode_url="q_url" />
+		<float-button @custom-event="updateContactStatus()"></float-button>
+		<van-dialog id="van-dialog" />
+		<u-share-action-sheet :show.sync="showShare" :show-info="shareInfo" />
+	</page-layout></template>
 
 <script>
 	import NavBar from '@/components/layout/nav-bar'
@@ -74,6 +68,9 @@
 		applicationAreasList,
 		globalPollShow
 	} from '@/api/exhibitor'
+	import {
+		getAdInfo
+	} from '@/api'
 	import DisclaimerText from '@/components/disclaimer-text/index.vue'
   import PageLayout from "@/components/layout/page-layout";
 
@@ -123,7 +120,10 @@
 				total: 0,
 				baseUrl: 'https://mp-test-onlinecatelogue.matchexpo.cn',
 				showContactUs: false,
-				q_url: ''
+				q_url: '',
+				adInfo: {
+					ad_file: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200'
+				}
 			}
 		},
 		created() {
@@ -131,7 +131,8 @@
 			this.getProductCategoryList()
 			this.getApplicationAreasList()
 			this.getList()
-			this.getGlobalPollShow()
+			this.getGlobalPollShow(),
+			this.getAdData()
 		},
 		methods: {
 			handlePageChange(page) {
@@ -292,6 +293,16 @@
 			updateContactStatus(data) {
 				this.showContactUs = data.showContactUs
 				this.q_url = data.q_url
+			},
+			navigateToAdLink(href) {
+				this.navigateTo(href)
+			},
+			getAdData() {
+				getAdInfo({
+					number: "ExhibitorProductTop001"
+				}).then(res => {
+					this.adInfo = res.data[0]
+				})
 			}
 		}
 	}

+ 78 - 65
pages/exhibitor/index.vue

@@ -1,66 +1,63 @@
 <template>
-  <page-layout class="exhibitor-index">
-    <nav-bar title="展商信息" @init="onInitNavbar"></nav-bar>
-    <u-scroll-view :tabbar-conflict="true">
-      <view class="main-container">
-        <!-- <view class="exhibitor-filter">
-          <view>
-            <view class="exhibitor-filter-label">展馆号</view>
-            <u-dropdown-select ref="select1" v-model="searchHall" placeholder="选择展馆号" :options="halls"
-              @dropdown="onSelectDropdown(1)" @change="searchExhibitorsList()" />
-          </view>
-          <view>
-            <view class="exhibitor-filter-label">产品类别</view>
-            <u-dropdown-select ref="select2" v-model="searchCategoryId" placeholder="选择产品类别" :options="categories"
-              @dropdown="onSelectDropdown(2)" @change="searchExhibitorsList()" />
-          </view>
-          <view>
-            <view class="exhibitor-filter-label">应用领域</view>
-            <u-dropdown-select ref="select3" v-model="searchApplicationAreas" placeholder="选择应用领域"
-              :options="applicationAreass" @dropdown="onSelectDropdown(3)" @change="searchExhibitorsList()" />
-          </view>
-        </view> -->
-        <view class="search-box">
-          <view class="search-title item-title">
-            搜索
-          </view>
-          <u-search v-model="searchKeyword" placeholder="搜索展商 / 展品名称 / 会议" @search="onSearch" />
-        </view>
-        <view class="select-box">
-          <view class="select-title item-title">
-            筛选
-          </view>
-          <view class="select-list">
-            <u-select title="展馆号" v-model="searchHall" :data="halls" uId="dropdown1"
-                      @change-event="searchExhibitorsList()"></u-select>
-            <u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="dropdown2" :children="true"
-                      @change-event="searchExhibitorsList()"></u-select>
-            <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="dropdown3"
-                      @change-event="searchExhibitorsList()"></u-select>
-          </view>
-          <view class="select-search-btn" @click="searchExhibitorsList()">搜索</view>
-        </view>
-        <view class="ad-space">
-          <image
-              src="https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200"
-              mode="aspectFill" />
-        </view>
-        <van-empty v-if="exhibitorList.length === 0" description="暂无数据" />
-        <view v-else class="exhibitor-list">
-          <template v-for="(item, index) in exhibitorList">
-            <exhibitor-item :item="item" :key="index" :pollShow="pollShow.exhibitors_poll_show"
-                            @share="(e) => $emit('share', e)" @updateItemValue="updateItemValue()" />
-          </template>
-        </view>
-        <u-pagination :pageSize="exhibitorsParams.page_size" :total="total"
-                      @page-change="handlePageChange()" v-if="total>0"></u-pagination>
-        <disclaimer-text></disclaimer-text>
-      </view>
-    </u-scroll-view>
-    <contact-us :show.sync="showContactUs" :qrcode_url="q_url" />
-    <float-button @custom-event="updateContactStatus()"></float-button>
-  </page-layout>
-</template>
+	<page-layout class="exhibitor-index">
+		<nav-bar title="展商信息" @init="onInitNavbar"></nav-bar>
+		<u-scroll-view :tabbar-conflict="true">
+			<view class="main-container">
+				<!-- <view class="exhibitor-filter">
+					<view>
+						<view class="exhibitor-filter-label">展馆号</view>
+						<u-dropdown-select ref="select1" v-model="searchHall" placeholder="选择展馆号" :options="halls"
+							@dropdown="onSelectDropdown(1)" @change="searchExhibitorsList()" />
+					</view>
+					<view>
+						<view class="exhibitor-filter-label">产品类别</view>
+						<u-dropdown-select ref="select2" v-model="searchCategoryId" placeholder="选择产品类别" :options="categories"
+							@dropdown="onSelectDropdown(2)" @change="searchExhibitorsList()" />
+					</view>
+					<view>
+						<view class="exhibitor-filter-label">应用领域</view>
+						<u-dropdown-select ref="select3" v-model="searchApplicationAreas" placeholder="选择应用领域"
+							:options="applicationAreass" @dropdown="onSelectDropdown(3)" @change="searchExhibitorsList()" />
+					</view>
+				</view> -->
+				<view class="search-box">
+					<view class="search-title item-title">
+						搜索
+					</view>
+					<u-search v-model="searchKeyword" placeholder="搜索展商 / 展品名称 / 会议" @search="onSearch" />
+				</view>
+				<view class="select-box">
+					<view class="select-title item-title">
+						筛选
+					</view>
+					<view class="select-list">
+						<u-select title="展馆号" v-model="searchHall" :data="halls" uId="dropdown1"
+							@change-event="searchExhibitorsList()"></u-select>
+						<u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="dropdown2" :children="true"
+							@change-event="searchExhibitorsList()"></u-select>
+						<u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="dropdown3"
+							@change-event="searchExhibitorsList()"></u-select>
+					</view>
+					<view class="select-search-btn" @click="searchExhibitorsList()">搜索</view>
+				</view>
+				<view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
+					<image :src="adInfo.ad_file" />
+				</view>
+				<van-empty v-if="exhibitorList.length === 0" description="暂无数据" />
+				<view v-else class="exhibitor-list">
+					<template v-for="(item, index) in exhibitorList">
+						<exhibitor-item :item="item" :key="index" :pollShow="pollShow.exhibitors_poll_show"
+							@share="(e) => $emit('share', e)" @updateItemValue="updateItemValue()" />
+					</template>
+				</view>
+				<u-pagination :pageSize="exhibitorsParams.page_size" :total="total"
+					@page-change="handlePageChange()" v-if="total>0"></u-pagination>
+				<disclaimer-text></disclaimer-text>
+			</view>
+		</u-scroll-view>
+		<contact-us :show.sync="showContactUs" :qrcode_url="q_url" />
+		<float-button @custom-event="updateContactStatus()"></float-button>
+	</page-layout></template>
 
 <script>
 	import NavBar from '@/components/layout/nav-bar'
@@ -80,6 +77,9 @@
 		applicationAreasList,
 		globalPollShow
 	} from '@/api/exhibitor'
+	import {
+		getAdInfo
+	} from '@/api'
 	import DisclaimerText from '@/components/disclaimer-text/index.vue'
   import PageLayout from "@/components/layout/page-layout";
 
@@ -128,7 +128,10 @@
 				total: 0,
 				baseUrl: 'https://mp-test-onlinecatelogue.matchexpo.cn',
 				showContactUs: false,
-				q_url: ''
+				q_url: '',
+				adInfo: {
+					ad_file: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200'
+				}
 			}
 		},
 		created() {
@@ -138,6 +141,7 @@
 			this.getApplicationAreasList()
 			this.getExhibitorsList()
 			this.getGlobalPollShow()
+			this.getAdData()
 		},
 		methods: {
 			getApplicationAreasList() {
@@ -297,6 +301,16 @@
 			updateContactStatus(data) {
 				this.showContactUs = data.showContactUs
 				this.q_url = data.q_url
+			},
+			navigateToAdLink(href) {
+				this.navigateTo(href)
+			},
+			getAdData() {
+				getAdInfo({
+					number: "ExhibitorListTop001"
+				}).then(res => {
+					this.adInfo = res.data[0]
+				})
 			}
 		}
 	}
@@ -375,5 +389,4 @@
 				}
 			}
 		}
-	}
-	</style>
+	}	</style>

+ 406 - 349
pages/index/home.vue

@@ -92,366 +92,423 @@
       </view>
     </view>
     <contact-us :show.sync="showContactUs" :qrcode_url="q_url"/>
-    <float-button @custom-event="updateContactStatus()"></float-button>
+		<float-button @custom-event="updateContactStatus()"></float-button>
+		<van-overlay :show="isShow">
+			<view class="ad-wrapper">
+				<view class="img-btn-box">
+					<view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
+						<image :src="adInfo.ad_file" mode="widthFix" class="ad-img" />
+					</view>
+					<view class="home-ad-close" @click="isShow = false">
+						<van-icon name="close" />
+					</view>
+				</view>
+			</view>
+		</van-overlay>
   </page-layout>
 </template>
 
 <script>
+	
 import NavBar from '@/components/layout/nav-bar'
-import UScrollView from '@/components/common/u-scroll-view'
-import USwiper from '@/components/common/u-swiper'
-import USearch from '@/components/common/u-search'
-import UPanel from '@/components/common/u-panel'
-import NewsRecommend from '@/pages/news/components/news-recommend.vue'
-import ContactUs from '@/pages/index/components/contact-us.vue'
-import PopupAd from '@/pages/index/components/popup-ad.vue'
-import floatButton from "@/components/layout/float-button";
-import {
-  getDashboardInfo
-} from '@/api'
-import PageLayout from "@/components/layout/page-layout";
-
-export default {
-  options: {
-    styleIsolation: 'shared'
-  },
-  components: {
-    PageLayout,
-    floatButton,
-    NavBar,
-    UScrollView,
-    USwiper,
-    USearch,
-    UPanel,
-    NewsRecommend,
-    ContactUs,
-    PopupAd
-  },
-  data() {
-    return {
-      logo: '',
-      searchKeyword: '',
-      navType: '',
-      showContactUs: false,
-      showPopupAd: false,
-      q_url: '',
-      navIcons: [{
-        icon: 'icon-xiaochengxu-guanyuzhanhuiicon',
-        name: '关于展会',
-        is_hide: false,
-        link: 'https://www.productronicachina.com.cn/zh-cn/productronica-china-2025'
-      }, {
-        icon: 'icon-xiaochengxu-zhanshangmingluicon',
-        name: '展商名录',
-        is_hide: false,
-        link: '/pages/exhibitor/index'
-      }, {
-        icon: 'icon-zhanpinziliaoicon',
-        name: '展商产品',
-        is_hide: false,
-        link: '/pages/exhibitor/exhibit'
-      }, {
-        icon: 'icon-zhantaihuodongicon',
-        name: '同期活动',
-        is_hide: false,
-        link: '/pages/activity/index'
-      }, {
-        icon: 'icon-zhanshangxinwenicon',
-        name: '展商新闻',
-        is_hide: false,
-        link: '/pages/news/index?type=exhibitor'
-      }, {
-        icon: 'icon-xiaochengxu-zhanguanpingmiantuicon',
-        name: '展馆平面图',
-        is_hide: false,
-        link: 'https://www.productronicachina.com.cn/for-visitors-fairgrounds-map'
-      }, {
-        icon: 'icon-xiaochengxu-guanzhongzhinanicon',
-        name: '观众指南',
-        is_hide: false,
-        link: ''
-      }, {
-        icon: 'icon-xiaochengxu-jiaotongzhinanicon',
-        name: '交通指南',
-        is_hide: false,
-        link: 'https://www.productronicachina.com.cn/travel-stay-getting-there'
-      }],
-      images: [],
-      videos: [],
-      albumPics: [],
-      // 合作方列表
-      part1: [],
-      part2: [],
-      part3: []
-    }
-  },
-  created() {
-    this.getDashboardData()
-  },
-  mounted() {
-    this.getSystemInfo(this,(res)=>{
-      this.navType = res
-    })
-  },
-  methods: {
-    onClickNavIcon(item) {
-      if (item.link === '/pages/exhibitor/index') {
-        this.$emit('switch-tab', 'exhibitor')
-        return
-      } else {
-        this.navigateTo(item.link)
-      }
-    },
-    onClickSearch() {
-      this.navigateTo('/pages/index/search?query=' + this.searchKeyword)
-    },
-    onClickAlbum(index) {
-      const pics = this.albumPics.map(v => {
-        return v
-      })
-      uni.previewImage({
-        current: index,
-        urls: pics
-      })
-    },
-    getDashboardData() {
-      getDashboardInfo('', process.env.CONFERENCE_WEBSITE).then(res => {
-        this.logo = res.data.module0.url
-        this.images = res.data.module1
-        let module2 = res.data.module2
-        for (var i = 0; i < module2.length; i++) {
-          this.navIcons[i].name = module2[i].name
-          this.navIcons[i].is_hide = module2[i].is_hide
-        }
-        this.videos = res.data.module3.video
-        this.albumPics = res.data.module3.image
-        this.part1 = res.data.module4.part1.logo
-        this.part2 = res.data.module4.part2.logo
-      })
-    },
-    onLogoClick(item) {
-      if (item.url) {
-        this.navigateTo(item.href)
-      }
-    },
-    updateContactStatus(data) {
-      this.showContactUs = data.showContactUs
-      this.q_url = data.q_url
-    }
-    // onVisitClick() {
-    // 	getBuoyInfo().then(res => {
-    // 		let jump_url = res.data.visit_jump_url
-    // 		this.navigateTo(jump_url)
-    // 	})
-    // },
-
-  }
-}
+	import UScrollView from '@/components/common/u-scroll-view'
+	import USwiper from '@/components/common/u-swiper'
+	import USearch from '@/components/common/u-search'
+	import UPanel from '@/components/common/u-panel'
+	import NewsRecommend from '@/pages/news/components/news-recommend.vue'
+	import ContactUs from '@/pages/index/components/contact-us.vue'
+	import PopupAd from '@/pages/index/components/popup-ad.vue'
+	import floatButton from "@/components/layout/float-button"
+	import VanOverlay from '@/wxcomponents/vant/overlay/index'
+	import {
+		getDashboardInfo,
+		getAdInfo
+	} from '@/api'
+	import PageLayout from "@/components/layout/page-layout";
+	export default {
+		options: {
+			styleIsolation: 'shared'
+		},
+		components: {
+			PageLayout,
+			floatButton,
+			NavBar,
+			UScrollView,
+			USwiper,
+			USearch,
+			UPanel,
+			NewsRecommend,
+			ContactUs,
+			PopupAd,
+			VanOverlay
+		},
+		data() {
+			return {
+				navType: '',
+				logo: '',
+				searchKeyword: '',
+				showContactUs: false,
+				showPopupAd: false,
+				q_url: '',
+				navIcons: [{
+					icon: 'icon-xiaochengxu-guanyuzhanhuiicon',
+					name: '关于展会',
+					is_hide: false,
+					link: 'https://www.productronicachina.com.cn/zh-cn/productronica-china-2025'
+				}, {
+					icon: 'icon-xiaochengxu-zhanshangmingluicon',
+					name: '展商名录',
+					is_hide: false,
+					link: '/pages/exhibitor/index'
+				}, {
+					icon: 'icon-zhanpinziliaoicon',
+					name: '展商产品',
+					is_hide: false,
+					link: '/pages/exhibitor/exhibit'
+				}, {
+					icon: 'icon-zhantaihuodongicon',
+					name: '同期活动',
+					is_hide: false,
+					link: '/pages/activity/index'
+				}, {
+					icon: 'icon-zhanshangxinwenicon',
+					name: '展商新闻',
+					is_hide: false,
+					link: '/pages/news/index?type=exhibitor'
+				}, {
+					icon: 'icon-xiaochengxu-zhanguanpingmiantuicon',
+					name: '展馆平面图',
+					is_hide: false,
+					link: 'https://www.productronicachina.com.cn/for-visitors-fairgrounds-map'
+				}, {
+					icon: 'icon-xiaochengxu-guanzhongzhinanicon',
+					name: '观众指南',
+					is_hide: false,
+					link: ''
+				}, {
+					icon: 'icon-xiaochengxu-jiaotongzhinanicon',
+					name: '交通指南',
+					is_hide: false,
+					link: 'https://www.productronicachina.com.cn/travel-stay-getting-there'
+				}],
+				images: [],
+				videos: [],
+				albumPics: [],
+				// 合作方列表
+				part1: [],
+				part2: [],
+				part3: [],
+				isShow: true,
+				adInfo: {
+					ad_file: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200'
+				}
+			}
+		},
+		created() {
+			this.getDashboardData()
+			this.getAdData()
+		},
+		mounted() {
+		    this.getSystemInfo(this,(res)=>{
+		      this.navType = res
+		    })
+		  },
+		methods: {
+			onClickNavIcon(item) {
+				if (item.link === '/pages/exhibitor/index') {
+					this.$emit('switch-tab', 'exhibitor')
+					return
+				} else {
+					this.navigateTo(item.link)
+				}
+			},
+			onClickSearch() {
+				this.navigateTo('/pages/index/search?query=' + this.searchKeyword)
+			},
+			onClickAlbum(index) {
+				const pics = this.albumPics.map(v => {
+					return v
+				})
+				uni.previewImage({
+					current: index,
+					urls: pics
+				})
+			},
+			getDashboardData() {
+				getDashboardInfo('', process.env.CONFERENCE_WEBSITE).then(res => {
+					this.logo = res.data.module0.url
+					this.images = res.data.module1
+					let module2 = res.data.module2
+					for (var i = 0; i < module2.length; i++) {
+						this.navIcons[i].name = module2[i].name
+						this.navIcons[i].is_hide = module2[i].is_hide
+					}
+					this.videos = res.data.module3.video
+					this.albumPics = res.data.module3.image
+					this.part1 = res.data.module4.part1.logo
+					this.part2 = res.data.module4.part2.logo
+				})
+			},
+			onLogoClick(item) {
+				if (item.url) {
+					this.navigateTo(item.href)
+				}
+			},
+			updateContactStatus(data) {
+				this.showContactUs = data.showContactUs
+				this.q_url = data.q_url
+			},
+			getAdData() {
+				getAdInfo({
+					number: "IndexPopUp001"
+				}).then(res => {
+					this.adInfo = res.data[0]
+				})
+			},
+			navigateToAdLink(href) {
+				this.navigateTo(href)
+			}
+			// onVisitClick() {
+			// 	getBuoyInfo().then(res => {
+			// 		let jump_url = res.data.visit_jump_url
+			// 		this.navigateTo(jump_url)
+			// 	})
+			// },
+
+		}
+	}
 </script>
 
 <style lang="scss">
-.content {
-  padding-top: 100rpx;
-}
-
-.logo {
-  width: 150rpx;
-  height: 37rpx;
-}
-
-.panel-group {
-  margin-top: 43rpx;
-  background-color: #FFFFFF;
-
-  &.logo-group {
-    padding-bottom: 30rpx;
-  }
-
-  &.panel-group-1 {
-    margin-top: 0;
-  }
-}
-
-.top-container {
-  display: flex;
-  align-items: center;
-
+.ad-wrapper {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+
+		.img-btn-box {
+			display: flex;
+			justify-content: center;
+			width: 500rpx;
+			position: relative;
+
+			.ad-space {
+				width: 100%;
+
+				.ad-img {
+					width: 100%;
+				}
+			}
+		}
+
+		.home-ad-close{
+			position: absolute;
+			top: -70rpx;
+			right: -70rpx;
+			.van-icon-close{
+				font-size: 60rpx;
+				color: #FFFFFF;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.panel-group {
+		margin-top: 43rpx;
+		background-color: #FFFFFF;
+
+		&.logo-group {
+			padding-bottom: 30rpx;
+		}
+
+		&.panel-group-1 {
+			margin-top: 0;
+		}
+	}
+
+	.top-container {
+		display: flex;
+		align-items: center;
+
+		.countdown {
+			display: flex;
+			align-items: center;
+			margin-left: 27rpx;
+			font-size: $fontSize3;
+
+			.days {
+				color: #F97316;
+				font-size: $fontSize6;
+				font-weight: bold;
+				padding: 0 4rpx;
+			}
+		}
+	}
   .countdown {
     display: flex;
     align-items: center;
     margin-left: 27rpx;
     font-size: $fontSize3;
 
-    .days {
-      color: #F97316;
-      font-size: $fontSize6;
-      font-weight: bold;
-      padding: 0 4rpx;
-    }
-  }
-}
-
-.search-container {
-  .search-input {
-    height: 64rpx;
-    border-radius: 50rpx;
-    background-color: #FFFFFF;
-    box-shadow: 0 4rpx 4rpx 0 rgba(0, 0, 0, 0.15);
-    border: 2rpx solid #D9D9D9;
-    padding: 4rpx;
-    overflow: hidden;
-
-    .van-field__placeholder {
-      font-size: $fontSize2;
-    }
-
-    .van-cell__left-icon-wrap {
-      height: 50rpx;
-    }
-
-    .van-field__control {
-      font-size: $fontSize2;
-      height: 50rpx;
-    }
-  }
-
-  .van-search {
-    --search-padding: 0rpx;
-    --search-input-height: 34rpx;
-    --search-background-color: #FFFFFF;
-    padding-right: 24rpx;
-    font-size: $fontSize2;
-  }
-
-  .search-text {
-    font-size: $fontSize2;
-  }
-
-  .van-search__action {
-    color: #333333;
-  }
-
-  .van-icon {
-    color: #D4D4D6;
-  }
-
-  .van-cell {
-    padding: 2rpx 0rpx 2rpx !important;
-  }
-}
-
-.nav-icons {
-  display: grid;
-  grid-template-columns: 1fr 1fr 1fr 1fr;
-  grid-row-gap: 53rpx;
-  margin-top: 47rpx;
-  margin-bottom: 41rpx;
-
-  .nav-icon-wrapper {
-    @include display-flex-center;
-    flex-direction: column;
-    cursor: pointer;
-  }
-
-  .nav-text {
-    margin-top: 20rpx;
-    font-size: $fontSize3;
-    color: #555555;
-  }
-
-  .nav-icon {
-    @include display-flex-center;
-    width: 73rpx;
-    height: 73rpx;
-    border-radius: 50%;
-    overflow: hidden;
-    background-color: $buttonPrimaryColor;
-
-    .iconfont {
-      font-size: 46rpx;
-      color: #FFFFFF;
-    }
-
-    & > view {
-      width: 46rpx;
-      height: 46rpx;
-      background-size: 46rpx 46rpx;
-    }
-  }
-}
-
-.album {
-  display: grid;
-  grid-auto-flow: row;
-  grid-gap: 15rpx;
-  height: 500rpx;
-  width: fit-content;
-  grid-template-areas: "a b b" "c d f" "c e f";
-
-  .album-pic {
-    width: 196rpx;
-    height: 155rpx;
-    border-radius: 10rpx;
-    overflow: hidden;
-
-    &:nth-child(1) {
-      grid-area: a;
-    }
-
-    &:nth-child(2) {
-      width: 418rpx;
-      height: 155rpx;
-      grid-area: b;
-    }
-
-    &:nth-child(3) {
-      grid-area: c;
-    }
-
-    &:nth-child(4) {
-      grid-area: d;
-    }
-
-    &:nth-child(5) {
-      grid-area: e;
-    }
-
-    &:nth-child(6) {
-      grid-area: f;
-    }
-
-    &:nth-child(3),
-    &:nth-child(6) {
-      width: 196rpx;
-      height: 324rpx;
-    }
-  }
-
-  image {
-    width: 100%;
-    height: 100%;
-  }
-}
-
-.partners {
-  display: grid;
-  grid-template-columns: repeat(3, 1fr);
-  grid-column-gap: 9rpx;
-  grid-row-gap: 13rpx;
-
-  .partner {
-    @include display-flex-center;
-    width: 100%;
-    height: 120rpx;
-    border-radius: 5rpx;
-    border: 1rpx solid #D9D9D9;
-    overflow: hidden;
-  }
-
-  image {
-    object-fit: contain;
-  }
-}
-
-
-</style>
+	.search-container {
+		.search-input {
+			height: 64rpx;
+			border-radius: 50rpx;
+			background-color: #FFFFFF;
+			box-shadow: 0 4rpx 4rpx 0 rgba(0, 0, 0, 0.15);
+			border: 2rpx solid #D9D9D9;
+			padding: 4rpx;
+			overflow: hidden;
+
+			.van-field__placeholder {
+				font-size: $fontSize2;
+			}
+
+			.van-cell__left-icon-wrap {
+				height: 50rpx;
+			}
+
+			.van-field__control {
+				font-size: $fontSize2;
+				height: 50rpx;
+			}
+		}
+
+		.van-search {
+			--search-padding: 0rpx;
+			--search-input-height: 34rpx;
+			--search-background-color: #FFFFFF;
+			padding-right: 24rpx;
+			font-size: $fontSize2;
+		}
+
+		.search-text {
+			font-size: $fontSize2;
+		}
+
+		.van-search__action {
+			color: #333333;
+		}
+
+		.van-icon {
+			color: #D4D4D6;
+		}
+
+		.van-cell {
+			padding: 2rpx 0rpx 2rpx !important;
+		}
+	}
+
+	.nav-icons {
+		display: grid;
+		grid-template-columns: 1fr 1fr 1fr 1fr;
+		grid-row-gap: 53rpx;
+		margin-top: 47rpx;
+		margin-bottom: 41rpx;
+
+		.nav-icon-wrapper {
+			@include display-flex-center;
+			flex-direction: column;
+			cursor: pointer;
+		}
+
+		.nav-text {
+			margin-top: 20rpx;
+			font-size: $fontSize3;
+			color: #555555;
+		}
+
+		.nav-icon {
+			@include display-flex-center;
+			width: 73rpx;
+			height: 73rpx;
+			border-radius: 50%;
+			overflow: hidden;
+			background-color: $buttonPrimaryColor;
+
+			.iconfont {
+				font-size: 46rpx;
+				color: #FFFFFF;
+			}
+
+			&>view {
+				width: 46rpx;
+				height: 46rpx;
+				background-size: 46rpx 46rpx;
+			}
+		}
+	}
+
+	.album {
+		display: grid;
+		grid-auto-flow: row;
+		grid-gap: 15rpx;
+		height: 500rpx;
+		width: fit-content;
+		grid-template-areas: "a b b" "c d f" "c e f";
+
+		.album-pic {
+			width: 196rpx;
+			height: 155rpx;
+			border-radius: 10rpx;
+			overflow: hidden;
+
+			&:nth-child(1) {
+				grid-area: a;
+			}
+
+			&:nth-child(2) {
+				width: 418rpx;
+				height: 155rpx;
+				grid-area: b;
+			}
+
+			&:nth-child(3) {
+				grid-area: c;
+			}
+
+			&:nth-child(4) {
+				grid-area: d;
+			}
+
+			&:nth-child(5) {
+				grid-area: e;
+			}
+
+			&:nth-child(6) {
+				grid-area: f;
+			}
+
+			&:nth-child(3),
+			&:nth-child(6) {
+				width: 196rpx;
+				height: 324rpx;
+			}
+		}
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.partners {
+		display: grid;
+		grid-template-columns: repeat(3, 1fr);
+		grid-column-gap: 9rpx;
+		grid-row-gap: 13rpx;
+
+		.partner {
+			@include display-flex-center;
+			width: 100%;
+			height: 120rpx;
+			border-radius: 5rpx;
+			border: 1rpx solid #D9D9D9;
+			overflow: hidden;
+		}
+
+		image {
+			object-fit: contain;
+		}
+	}
+</style>

+ 95 - 73
pages/user/index.vue

@@ -1,67 +1,67 @@
 <template>
-  <page-layout class="user-index">
-    <nav-bar title="个人中心" @init="onInitNavbar"></nav-bar>
-    <u-scroll-view :tabbar-conflict="true">
-      <view class="main-container">
-        <view class="user-info" @click="onClickUserInfo">
-          <view class="user-avator">
-            <image v-if="isLoginState && avatar" :src="avatar" />
-            <van-icon v-else class="icon" name="user" />
-          </view>
-          <view class="user-title">
-            <view class="user-name">
-              <template v-if="isLoginState">{{ nickName || phone }}</template>
-              <template v-else>请登录/注册</template>
-            </view>
-            <view v-if="isLoginState && nickName" class="user-phone">手机号:{{ phone }}</view>
-          </view>
-        </view>
-        <view class="user-grid-menu">
-          <view hover-class="active" @click="navigateTo('/pages/user/like')">
-            <view class="iconfont icon-heart1"></view>
-            <view>点赞</view>
-          </view>
-          <view hover-class="active" @click="navigateTo('/pages/user/favorites')">
-            <view class="iconfont icon-Favourites-Add-Large"></view>
-            <view>收藏</view>
-          </view>
-          <view hover-class="active" @click="navigateTo('/pages/user/vote')">
-            <view class="iconfont icon-xiaochengxu-toupiaoicon"></view>
-            <view>投票</view>
-          </view>
-          <view hover-class="active" @click="showAlertDialog('功能未开通')">
-            <view class="iconfont icon-xiaochengxu-guanzhongyudengjiicon"></view>
-            <view>预登记</view>
-          </view>
-        </view>
-        <view class="user-list-item">
-          <van-cell-group>
-            <van-cell title="设置" is-link @click="onClickSetting">
-              <view slot="icon" class="iconfont icon-setting" />
-            </van-cell>
-          </van-cell-group>
-        </view>
-        <view class="ad-space">
-          <image src="https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70adbdbe.png?x-oss-process=image/resize,w_200" mode="aspectFill" />
-        </view>
-      </view>
-    </u-scroll-view>
-  </page-layout>
-</template>
+	<page-layout class="user-index">
+		<nav-bar title="个人中心" @init="onInitNavbar"></nav-bar>
+		<u-scroll-view :tabbar-conflict="true">
+			<view class="main-container">
+				<view class="user-info" @click="onClickUserInfo">
+					<view class="user-avator">
+						<image v-if="isLoginState && avatar" :src="avatar" />
+						<van-icon v-else class="icon" name="user" />
+					</view>
+					<view class="user-title">
+						<view class="user-name">
+							<template v-if="isLoginState">{{ nickName || phone }}</template>
+							<template v-else>请登录/注册</template>
+						</view>
+						<view v-if="isLoginState && nickName" class="user-phone">手机号:{{ phone }}</view>
+					</view>
+				</view>
+				<view class="user-grid-menu">
+					<view hover-class="active" @click="navigateTo('/pages/user/like')">
+						<view class="iconfont icon-heart1"></view>
+						<view>点赞</view>
+					</view>
+					<view hover-class="active" @click="navigateTo('/pages/user/favorites')">
+						<view class="iconfont icon-Favourites-Add-Large"></view>
+						<view>收藏</view>
+					</view>
+					<view hover-class="active" @click="navigateTo('/pages/user/vote')">
+						<view class="iconfont icon-xiaochengxu-toupiaoicon"></view>
+						<view>投票</view>
+					</view>
+					<view hover-class="active" @click="showAlertDialog('功能未开通')">
+						<view class="iconfont icon-xiaochengxu-guanzhongyudengjiicon"></view>
+						<view>预登记</view>
+					</view>
+				</view>
+				<view class="user-list-item">
+					<van-cell-group>
+						<van-cell title="设置" is-link @click="onClickSetting">
+							<view slot="icon" class="iconfont icon-setting" />
+						</van-cell>
+					</van-cell-group>
+				</view>
+				<view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
+					<image :src="adInfo.ad_file" />
+				</view>
+			</view>
+		</u-scroll-view>
+	</page-layout></template>
 
 <script>
 	import NavBar from '@/components/layout/nav-bar'
 	import UScrollView from '@/components/common/u-scroll-view'
 	import VanCell from '@/wxcomponents/vant/cell/index'
 	import VanCellGroup from '@/wxcomponents/vant/cell-group/index'
-  import PageLayout from "@/components/layout/page-layout";
-
-	export default {
+	import PageLayout from "@/components/layout/page-layout";
+	import {
+			getAdInfo
+		} from '@/api'	export default {
 		options: {
 			styleIsolation: 'shared'
 		},
 		components: {
-      PageLayout,
+      		PageLayout,
 			NavBar,
 			UScrollView,
 			VanCell,
@@ -98,28 +98,40 @@
 		},
 		data() {
 			return {
+				adInfo: {
+					ad_file: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da70a6c76a.png?x-oss-process=image/resize,w_200'
+				}
 			}
 		},
-		created() {},
-		onShow() {
-		},
-		methods: {
+		created() {
+			this.getAdData()},
+		}, 		methods: {
 			onClickSetting() {
 				this.navigateTo('/pages/user/setting')
 			},
-			onClickUserInfo(){
+			onClickUserInfo() {
 				this.navigateTo('/pages/user/info')
+			},
+			getAdData() {
+				getAdInfo({
+					number: "UserCenter001"
+				}).then(res => {
+					this.adInfo = res.data[0]
+				})
+			},
+			navigateToAdLink(href) {
+				this.navigateTo(href)
 			}
 		}
 	}
 </script>
 
 <style lang="scss">
-	.user-index{
 		.user-info{
 			display: flex;
 			align-items: center;
-			.user-avator{
+
+			.user-avator {
 				@include display-flex-center;
 				width: 111rpx;
 				height: 111rpx;
@@ -127,54 +139,64 @@
 				overflow: hidden;
 				margin-right: 23rpx;
 				background-color: $buttonPrimaryColor;
-				.icon{
+
+				.icon {
 					color: #ffffff;
 					opacity: 0.67;
 					font-size: 70rpx;
 				}
 			}
-			.user-name{
+
+			.user-name {
 				font-size: 30rpx;
 				color: #333333;
 			}
-			.user-phone{
+
+			.user-phone {
 				font-size: $fontSize3;
 				color: #7d7d7d;
 			}
 		}
-		.user-grid-menu{
+
+		.user-grid-menu {
 			display: grid;
 			grid-template-columns: repeat(4, 1fr);
 			height: 192rpx;
 			margin-top: 60rpx;
 			background-color: #FFFFFF;
-			&>view{
+
+			&>view {
 				@include display-flex-center;
 				flex-direction: column;
 				font-size: $fontSize3;
 				color: #333333;
 				cursor: pointer;
-				&.active{
+
+				&.active {
 					background-color: rgba(0, 0, 0, 0.05)
 				}
 			}
-			.iconfont{
+
+			.iconfont {
 				margin-bottom: 19rpx;
 				font-size: 44rpx;
 			}
-			.icon-Heart,.icon-xiaochengxu-toupiaoicon{
+
+			.icon-Heart,
+			.icon-xiaochengxu-toupiaoicon {
 				font-size: 48rpx;
 			}
 		}
-		.user-list-item{
+
+		.user-list-item {
 			margin-top: 23rpx;
-			.van-cell{
+			.van-cell {
 				--cell-horizontal-padding: 58rpx;
 			}
 		}
-		.ad-space{
+
+		.ad-space {
 			height: 180rpx;
 			margin-top: 23rpx;
 		}
-	}
-</style>
+	}</style>