浏览代码

优化小程序

yanj 4 月之前
父节点
当前提交
f45b01d3df

+ 2 - 3
components/common/u-tabs/index.vue

@@ -1,7 +1,6 @@
 <template>
 	<van-tabs :class="clazz" :active="tabActive" :ellipsis="false" @change="tabChange">
 		<template v-for="(item, index) in tabs">
-			
 			<van-tab class="u-tab" :title="item.label" :name="item.value" :key="item.value"></van-tab>
 		</template>
 	</van-tabs>
@@ -10,7 +9,7 @@
 <script>
 	import VanTabs from '@/wxcomponents/vant/tabs/index'
 	import VanTab from '@/wxcomponents/vant/tab/index'
-	
+
 	export default {
 		options: {
 			styleIsolation: 'shared'
@@ -143,4 +142,4 @@
 	.u-tab{
 		margin-right: 20rpx;
 	}
-</style>
+</style>

+ 21 - 8
components/layout/nav-bar.vue

@@ -1,11 +1,10 @@
 <template>
 	<view v-if="!hideNavbar" class="nav-bar" :class="{ 'nav-bar-transparent': transparent,'hide_nav_bar':hideNavbar }">
-		<view class="nav-bar-status" :style="{ height: statusBarHeight + 'px' }">
-		</view>
-		<view class="nav-bar-title" :style="{ height: titleBarHeight +'px' }">
+		<view class="nav-bar-status" :style="{ height: statusBarHeight + 'px' }"></view>
+		<view class="nav-bar-title">
 			<template v-if="showTitle">
 				<view class="btn-back" @click="goBack">
-					<van-icon v-if="hasParent" name="arrow-left" />
+					<van-icon name="arrow-left" />
 				</view>
 				<view class="nav-bar-title-text">{{ title }} </view>
 				<view></view>
@@ -33,6 +32,7 @@
 				return getCurrentPages().length > 1
 			}
 		},
+
 		data() {
 			return {
 				hideNavbar: false,
@@ -117,7 +117,15 @@
 				return nodes.length > 0;
 			},
 			goBack() {
-				uni.navigateBack()
+        this.refreshData()
+        if (this.hasParent) {
+          uni.navigateBack()
+        } else if(this.$store.getters.page.length > 0) {
+          this.$store.commit('DELETE_PAGE')
+          console.log(this.$store.getters.page)
+        } else {
+          this.navigateTo('/pages/index/index')
+        }
 			}
 		}
 	}
@@ -131,8 +139,10 @@
     position: fixed;
     left: 0;
     z-index: 10;
-    height: 180rpx;
+    height: $navBarHeight;
     top: 0;
+    display: flex;
+    flex-direction: column;
 		&.nav-bar-transparent{
 			background: none;
 			.nav-bar-title{
@@ -146,6 +156,8 @@
 			justify-content: space-between;
 			align-items: center;
 			padding: 0 16rpx;
+      flex: 1;
+      min-height: 1px;
 			view{
 				color: #ffffff;
 			}
@@ -153,8 +165,9 @@
 		.nav-bar-title-text{
 			flex: 1;
 			font-weight: 500;
-			font-size: $fontSize6;
-			line-height: 42rpx;
+			font-size: $fontSize5;
+			//line-height: 42rpx;
+      line-height: 1.5;
 			text-align: left;
 			text-transform: none;
 			padding-left: 8rpx;

+ 1 - 1
components/layout/page-layout.vue

@@ -26,7 +26,7 @@ export default {
 .page-module {
   height: 100%;
   &.mobile {
-    padding-top: 180rpx;
+    padding-top: $navBarHeight;
   }
   &.home-container.pc {
     padding-top: 100rpx;

+ 1 - 0
components/layout/tab-bar.vue

@@ -82,6 +82,7 @@
 		},
 		methods: {
 			onChange(active) {
+        this.$store.commit('SET_PAGE', active)
 				this.tabbarActive = active
 				if (this.tabbarActive === 'home') {
 					uni.setNavigationBarTitle({

+ 14 - 2
main.js

@@ -16,6 +16,18 @@ Vue.prototype.$config = {
 Vue.prototype.onInitNavbar = function(e) {
 	this.$config.pageHeight = e.detail.pageHeight
 }
+Vue.prototype.refreshData = function() {
+	const pages = getCurrentPages(); // 获取当前页面栈
+	if (pages.length - 2 >= 0) {
+		const currentPage = pages[pages.length - 2]; // 当前页面实例
+		const route = currentPage.route; // 页面路径
+		if (route === 'pages/index/index') {
+			uni.$emit('refreshData', store.getters.page[store.getters.page.length - 1]);
+		} else {
+			uni.$emit('refreshData', route);
+		}
+	}
+}
 Vue.prototype.checkAuth = function(pagePath) {
 	if (!store.getters.user) {
 		this.navigateTo('/pages/user/login?redirect=' + encodeURIComponent(pagePath))
@@ -146,10 +158,10 @@ Vue.prototype.showConfirmDialog = function(message, title) {
 }
 
 Vue.prototype.loadFontFace = function(fontFamily) {
-	const fontUrls = {
+/*	const fontUrls = {
 		'Poppins': 'https://oss.starify.cn/test/Poppins-Regular.ttf'
 	}
-	loadCloudFontFace(fontUrls[fontFamily], fontFamily + '.ttf', fontFamily)
+	loadCloudFontFace(fontUrls[fontFamily], fontFamily + '.ttf', fontFamily)*/
 }
 
 App.mpType = 'app'

+ 2 - 2
package.json

@@ -51,9 +51,9 @@
 					"NAME": "prod",
 					"VERSION": "0.01",
 					"TOKEN_KEY": "token",
-					"BASE_API": "https://starify-api-dev.matchexpo.cn",
+					"BASE_API": "https://miniprogapi.productronicachina.com.cn",
 					"WEBSITE": "https://www.productronicachina.com.cn",
-					"CONFERENCE_WEBSITE": "https://mp-test-onlinecatelogue.matchexpo.cn"
+					"CONFERENCE_WEBSITE": "https://miniprogapi.productronicachina.com.cn"
 				},
 				"define": {
 					"MP-CJN": true

+ 1 - 1
pages/activity/components/activity-item.vue

@@ -94,7 +94,7 @@
         // this.navigateTo('/pages/activity/detail')
       },
 			saveMeetingView(item) {
-				if (this.platform !== 'metting') return
+				if (this.platform !== 'meeting') return
 				mettingView({ id: item.id }).then(res => {
 
 				})

+ 32 - 37
pages/activity/detail.vue

@@ -1,10 +1,16 @@
 <template>
   <page-layout class="activity-detail">
-    <nav-bar title="同期活动详情" @init="onInitNavbar"></nav-bar>
+    <nav-bar title="同期活动" @init="onInitNavbar"></nav-bar>
     <u-scroll-view>
       <view class="main-container">
         <view class="activity-head">
           <view class="activity-title">{{ meetingInfo.title }}</view>
+          <view class="activity-views">
+            <view>
+              浏览:
+            </view>
+            {{ meetingInfo.total_view }}
+          </view>
           <view class="activity-props">
             <view class="activity-prop">
               <view class="activity-prop-label">举办时间:</view>
@@ -33,6 +39,7 @@
             </view>
           </view>-->
         </view>
+
         <view class="activity-image">
           <image :src="meetingInfo.image_url" :alt="meetingInfo.image_alt"
                  mode="aspectFill"/>
@@ -63,31 +70,13 @@
             </view>
           </view>
         </u-panel>
-        <view class="activity-agenda">
-          <view class="activity-agenda-title">{{ expand_content.topic_title.value }}</view>
-          <view class="activity-agenda-list">
-            <view class="activity-agenda-item" v-for="item in expand_content.topic_list.value">
-              <view class="iconfont icon-Check"></view>
-              <view class="activity-agenda-item-text">{{ item[0].value }}</view>
-            </view>
-          </view>
-          <view class="activity-agenda-guest-title">{{ expand_content.speaker_title.value }}</view>
-          <view class="activity-agenda-guest-link">
-            <van-button type="primary" @click="onClickGuestLink">
-              <template>
-                <view>{{ expand_content.speaker_btn.value }}</view>
-                <view class="arrow iconfont icon-right-s"></view>
-              </template>
-            </van-button>
-          </view>
-        </view>
         <u-panel class="activity-desc" :title="expand_content.schedule_title.value" :second="true">
           <view class="activity-schedule">
 <!--            <view class="activity-schedule-title">{{ expand_content.schedule_title.value }}</view>-->
             <view class="activity-schedule-desc">
               {{ expand_content.schedule_desc.value }}
             </view>
-            <view class="activity-schedule-table table">
+            <view class="activity-schedule-table table" v-if="meetingInfo.speech_schedule && meetingInfo.speech_schedule.length > 0">
               <view class="thead">
                 <view class="tr">
                   <view></view>
@@ -122,8 +111,7 @@
         </view>
 
         <view class="activity-operation">
-          <view class="activity-views">
-            <view class="iconfont icon-View"></view>{{ meetingInfo.total_view }}</view>
+
           <view class="activity-action">
             <button open-type="share" :plain="true">
               <view>
@@ -186,7 +174,11 @@ export default {
     this.getActiveInfo()
   },
   created() {
-
+    uni.$on('refreshData', (val) => {
+      if (val === 'pages/activity/detail') {
+        this.getActiveInfo()
+      }
+    })
   },
   methods: {
     onCollect(item) { // 收藏
@@ -256,7 +248,7 @@ export default {
 
   .activity-operation {
     @include display-flex-between;
-    margin-top: 32rpx;
+    //margin-top: 32rpx;
     position: fixed;
     width: 100%;
     left: 0;
@@ -269,27 +261,28 @@ export default {
   .activity-views {
     display: flex;
     align-items: center;
-    grid-gap: 9px;
-    font-size: $fontSize2;
+    //grid-gap: 9px;
+    font-size: $fontSize1;
     color: #555555;
+    justify-content: flex-end;
   }
 
   .activity-action {
     display: grid;
     grid-template-columns: 1fr 1fr;
-    width: 210rpx;
-    font-size: $fontSize2;
+    font-size: $fontSize3;
     color: #555555;
-
+    grid-gap: 10rpx;
+    width: 100%;
     & > view {
       display: flex;
       align-items: center;
-      justify-content: flex-end;
+      justify-content: center;
     }
 
     .iconfont {
-      font-size: $fontSize2;
-      margin-right: 4rpx;
+      font-size: 30rpx;
+      margin-right: 6rpx;
     }
 
     .icon-Favourites-Add-Large {
@@ -303,7 +296,7 @@ export default {
     }
 
     button {
-      font-size: $fontSize2;
+      font-size: $fontSize3;
       white-space: nowrap;
       line-height: inherit;
       background-color: transparent;
@@ -312,7 +305,7 @@ export default {
       view {
         display: flex;
         align-items: center;
-        font-size: $fontSize2;
+        font-size: $fontSize3;
       }
     }
   }
@@ -322,17 +315,19 @@ export default {
     display: grid;
     grid-template-columns: 1fr;
     grid-row-gap: 12rpx;
-    margin-top: 32rpx;
-    padding-right: 210rpx;
+    margin-top: 10rpx;
+    //padding-right: 210rpx;
     font-size: $fontSize2;
 
     .activity-prop {
       display: flex;
-      align-items: center;
+      align-items: flex-start;
+      line-height: 1.6;
     }
 
     .activity-prop-label {
       padding-right: 4rpx;
+      width: 140rpx;
     }
 
     .activity-prop-text {

+ 51 - 25
pages/activity/guest.vue

@@ -2,13 +2,13 @@
   <page-layout class="guest-detail">
     <nav-bar title="演讲嘉宾" @init="onInitNavbar"></nav-bar>
     <u-scroll-view>
-      <view class="main-container">
+      <view class="main-container" :class="{'loading':!init,'loaded':init}">
         <view class="activity-head">
           <view class="activity-title">{{ meetingInfo['title'] }}</view>
           <view class="activity-time">
             {{ meetingInfo['time'] }} | {{ meetingInfo['address'] }}
           </view>
-          <view class="activity-action">
+<!--          <view class="activity-action">
             <button open-type="share" :plain="true">
               <view>
                 <view class="iconfont icon-zhuanfa"></view>
@@ -20,7 +20,7 @@
               <view v-else class="iconfont icon-Favourites-Add-Large"></view>
               <view>收藏</view>
             </view>
-          </view>
+          </view>-->
         </view>
         <view class="activity-guest-list">
           <template v-for="(item, index) in meetingInfo['speech_schedule']">
@@ -51,7 +51,7 @@
                 </view>
                 <van-collapse class="subject-collapse" :value="item.active"  @change="(e) => onSubjectCollapseChange(e, index)">
                   <van-collapse-item :title="item.description" :name="item.title">
-                    <text>{{item.description}}</text>
+                    <text class="description">{{item.description}}</text>
                   </van-collapse-item>
                 </van-collapse>
               </view>
@@ -59,7 +59,7 @@
           </template>
         </view>
         <view class="activity-operation">
-          <view class="activity-views"></view>
+<!--          <view class="activity-views"></view>-->
           <view class="activity-action">
             <button open-type="share" :plain="true">
               <view>
@@ -107,6 +107,7 @@ export default {
   },
   data() {
     return {
+      init: false,
       id: 0,
       favorited: true,
       activeIndex: '',
@@ -146,6 +147,7 @@ export default {
       }
     },
     getActiveInfo() {
+      this.showLoading()
       getMeetingInfo({id: this.id}).then(res => {
         this.meetingInfo = res.data
         this.meetingInfo.time = returnTimeFormat(res.data.start_date, res.data.end_date)
@@ -157,6 +159,10 @@ export default {
             child_item.active = []
           })
         })
+        this.hideLoading()
+        setTimeout(()=>{
+          this.init = true
+        },500)
         // this.meetingInfo.content = convertRichTextToWXML(res.data.content)
       })
     },
@@ -173,6 +179,15 @@ export default {
 </script>
 
 <style lang="scss">
+.main-container {
+  transition: .1s ease-in-out;
+  &.loading {
+    opacity: 0;
+  }
+  &.loaded {
+    opacity: 1;
+  }
+}
 .guest-detail {
   .van-collapse-item__content {
     padding-top: 0 !important;
@@ -203,9 +218,15 @@ export default {
 
   .activity-operation {
     @include display-flex-between;
-    margin-top: 32rpx;
+    //margin-top: 32rpx;
+    position: fixed;
+    width: 100%;
+    left: 0;
+    bottom: 0;
+    padding: 40rpx 0;
+    padding: 40rpx 30rpx;
+    background-color: #ffffff;
   }
-
   .activity-views {
     font-size: $fontSize2;
     color: #555555;
@@ -214,31 +235,19 @@ export default {
   .activity-action {
     display: grid;
     grid-template-columns: 1fr 1fr;
-    width: 210rpx;
-    font-size: $fontSize2;
+    font-size: $fontSize3;
     color: #555555;
-    button {
-      font-size: $fontSize2;
-      white-space: nowrap;
-      line-height: inherit;
-      background-color: transparent;
-      border: none;
-
-      view {
-        display: flex;
-        align-items: center;
-        font-size: $fontSize2;
-      }
-    }
+    grid-gap: 10rpx;
+    width: 100%;
     & > view {
       display: flex;
       align-items: center;
-      justify-content: flex-end;
+      justify-content: center;
     }
 
     .iconfont {
-      font-size: $fontSize2;
-      margin-right: 4rpx;
+      font-size: 30rpx;
+      margin-right: 6rpx;
     }
 
     .icon-Favourites-Add-Large {
@@ -250,6 +259,20 @@ export default {
         color: $textActionColor;
       }
     }
+
+    button {
+      font-size: $fontSize3;
+      white-space: nowrap;
+      line-height: inherit;
+      background-color: transparent;
+      border: none;
+
+      view {
+        display: flex;
+        align-items: center;
+        font-size: $fontSize3;
+      }
+    }
   }
 
   .activity-guest-list {
@@ -290,6 +313,9 @@ export default {
       visibility: hidden;
     }
     .subject-collapse {
+      .description {
+        line-height: 1.6;
+      }
       .van-collapse-item {
         border-radius: 6px;
         border: 1px solid #E3E9F1;

+ 5 - 0
pages/activity/index.vue

@@ -56,6 +56,11 @@ export default {
   created() {
     this.getMettingDesc()
     this.getList()
+    uni.$on('refreshData', (val) => {
+      if (val === 'activity') {
+        this.getList()
+      }
+    })
   },
   methods: {
     getList() {

文件差异内容过多而无法显示
+ 0 - 645
pages/activity/tsconfig.json


+ 20 - 27
pages/disclaimer/index.vue

@@ -3,34 +3,25 @@
     <nav-bar title=" " transparent></nav-bar>
     <view class="body">
       <text class="title">
-<!--        {{ clauseInfo.title }}-->
         免责声明
       </text>
-
-      <text class="content">
-<!--        {{ clauseInfo.content }}-->
-        本系统内容由展商提供,慕尼黑展览(上海)有限公司(以下简称“MM-SH”)不对内容的正确性、完整性和最新状态承担任何责任。
-        本系统中包含第三方外部网站的链接,我们无法控制这些网站的内容。在任何情况下,相关网站提供者或运营者须对链接网站的内容负责,MM-SH不对此承担任何责任。
-        MM-SH特别保留权利更改或扩展本系统所提供内容,恕不另行通知。您基于由本系统或经本系统提供的信息作出决定,须自行承担风险。MM-SH不对因使用由本系统或经本系统提供的信息造成的任何直接或间接损失承担赔偿责任。
-      </text>
-      <text class="title">
-        Disclaimer
-      </text>
-      <text class="content">
-        The content of this System has been provided by the exhibitors and Messe Muenchen Shanghai Co., Ltd.
-        (hereinafter referred to as “MM-SH”) will not assume any liability for the correctness, completeness and
-        up-to-date status of the content. This System includes links to external websites of third parties, MM-SH have
-        no influence on the contents of these websites. In all cases, the respective site provider or operator shall be
-        responsible for the content of the sites linked. MM-SH do not bear any legal liability therefrom. In particular,
-        MM-SH reserves the right to make changes or extensions to the information provided without prior notification.
-        Decisions based on the information provided on or via this System are for your own account and risk. MM-SH shall
-        not be liable for any direct or indirect damages caused by use of information provided on or via this System.
-        MM-SH do not bear any legal liability for any loss arising from any direct or indirect use of contents of this
-        System, including without limitation the losses resulted from error, omission or virus, etc. The information,
-        photos, and logos, etc. in relation to the exhibitors in this System are all provided by exhibitors and any
-        download or use of the content for commercial purpose without authorization is prohibited. If you have any
-        objection, please contact MM-SH.
-      </text>
+      <view class="content">
+        <view class="margin-bottom">
+          本系统内容由展商提供,慕尼黑展览(上海)有限公司(以下简称“MM-SH”)不对内容的正确性、完整性和最新状态承担任何责任。
+        </view>
+        <view class="margin-bottom">
+          本系统中包含第三方外部网站的链接,我们无法控制这些网站的内容。在任何情况下,相关网站提供者或运营者须对链接网站的内容负责,MM-SH不对此承担任何责任。
+        </view>
+        <view class="margin-bottom">
+          MM-SH特别保留权利更改或扩展本系统所提供内容,恕不另行通知。您基于由本系统或经本系统提供的信息作出决定,须自行承担风险。MM-SH不对因使用由本系统或经本系统提供的信息造成的任何直接或间接损失承担赔偿责任。
+        </view>
+        <view class="margin-bottom">
+          对任何因直接或间接使用本系统内容而造成的任何损失,包括但不限于因有关内容有错误、遗漏、病毒等而导致的损失,MM-SH不对此承担任何法律责任。
+        </view>
+        <view class="margin-bottom">
+          本系统中有关展商的信息、图片、logo等均由相应展商提供(展商未提供展商logo的,统一显示展会logo),不得擅自下载或使用。如您有异议,请联系慕尼黑展览(上海)有限公司。
+        </view>
+      </view>
     </view>
   </page-layout>
 </template>
@@ -68,7 +59,9 @@ export default {
 <style lang="scss">
 .container {
 }
-
+.margin-bottom {
+  margin-bottom: 26rpx;
+}
 .body {
   padding: 50rpx;
 }

文件差异内容过多而无法显示
+ 36 - 30
pages/disclaimer/legalNotice.vue


文件差异内容过多而无法显示
+ 31 - 69
pages/disclaimer/privacy.vue


+ 41 - 21
pages/exhibitor/detail.vue

@@ -18,9 +18,21 @@
               {{ exhibitor.country_name }}
             </view>
           </view>
-          <view class="exhibitor-number">
-            <view class="exhibitor-number-label">展位号:</view>
-            <view class="exhibitor-number-text">{{ exhibitor.hall_booth_no }}</view>
+          <view class="exhibitor-info">
+            <view class="exhibitor-number">
+              <view class="exhibitor-number-label">展位号:</view>
+              <view class="exhibitor-number-text">{{ exhibitor.hall_booth_no }}</view>
+            </view>
+            <view class="exhibitor-right">
+              <view class="exhibitor-info-item">
+                <view class="iconfont icon-View"></view>
+                {{ exhibitor.pv }}
+              </view>
+              <view class="exhibitor-info-item" v-if="pollShow.exhibitors_poll_show">
+                <view class="iconfont icon-xiaochengxu-renqiicon"></view>
+                <view>人气:{{ exhibitor.poll_count }}</view>
+              </view>
+            </view>
           </view>
         </view>
         <view class="exhibitor-desc">
@@ -52,21 +64,10 @@
           <van-button type="primary" @click="navigateTo('/pages/index/index?tab=exhibitor')">点击查看更多展商信息</van-button>
         </view>
         <view class="exhibitor-operation">
-          <view class="exhibitor-views">
-            <view class="iconfont icon-View"></view>
-            {{ exhibitor.pv }}</view>
           <view class="exhibitor-action">
-            <view v-if="pollShow.exhibitors_poll_show">
-              <view class="iconfont icon-xiaochengxu-renqiicon"></view>
-              <view>人气:{{ exhibitor.poll_count }}</view>
-            </view>
-            <view>
-              <button :plain="true" @click.stop="onShare()">
-                <view>
-                  <view class="iconfont icon-zhuanfa"></view>
-                  <view>分享</view>
-                </view>
-              </button>
+            <view  @click.stop="onShare()">
+              <view class="iconfont icon-zhuanfa"></view>
+              <view>分享</view>
             </view>
             <view @click="onCollect()">
               <view v-if="exhibitor.is_collect" class="iconfont icon-favourites-filled-star-symbol active"></view>
@@ -156,8 +157,12 @@ export default {
     }
   },
   created() {
-    this.loadFontFace('Poppins')
     this.getGlobalPollShow()
+    uni.$on('refreshData', (val) => {
+      if (val === 'pages/exhibitor/detail') {
+        this.getExhibitorsInfo()
+      }
+    })
   },
   methods: {
     getExhibitorsInfo() {
@@ -238,10 +243,25 @@ export default {
     display: flex;
     align-items: flex-start;
   }
-
+  .exhibitor-info {
+    display: flex;
+    flex-direction: column;
+    grid-gap: 12rpx;
+    color: #555555;
+    .exhibitor-right {
+      display: flex;
+      grid-gap: 6rpx;
+      .exhibitor-info-item {
+        display: flex;
+        align-items: center;
+        grid-gap: 3rpx;
+        font-size: $fontSize0;
+      }
+    }
+  }
   .exhibitor-logo {
-    width: 170rpx;
-    height: 170rpx;
+    width: 160rpx;
+    height: 160rpx;
     padding: 6rpx;
     background: #FFFFFF;
     border: 1rpx solid #D9D9D9;

+ 37 - 15
pages/exhibitor/exhibit-detail.vue

@@ -9,6 +9,15 @@
           <view class="iconfont icon-Search"></view>
         </view>
         <view class="exhibit-name">{{ exhibit.name }}</view>
+        <view class="exhibitor-info-list">
+          <view class="exhibitor-info-item">
+            <view class="iconfont icon-View"></view>浏览:{{ exhibit.pv }}
+          </view>
+          <view class="exhibitor-info-item" v-if="pollShow.product_poll_show">
+            <view class="iconfont icon-xiaochengxu-renqiicon"></view>
+            <view>人气:{{ exhibit.poll_count }}</view>
+          </view>
+        </view>
         <view class="exhibit-desc">{{ exhibit.summary }}</view>
         <view class="exhibit-tags exhibitor-tags">
           <view class="exhibitor-tags-category">产品分类:</view>
@@ -22,22 +31,14 @@
             <view v-for="(item) in exhibit.application_areas_names" class="exhibitor-tag">{{ item }}</view>
           </view>
         </view>
+
         <exhibitor-card :exhibit="exhibit"></exhibitor-card>
         <disclaimer-text></disclaimer-text>
         <view class="exhibit-operation exhibitor-operation">
-          <view class="exhibitor-views"><view class="iconfont icon-View"></view>{{ exhibit.pv }}</view>
           <view class="exhibitor-action">
-            <view v-if="pollShow.product_poll_show">
-              <view class="iconfont icon-xiaochengxu-renqiicon"></view>
-              <view>人气:{{ exhibit.poll_count }}</view>
-            </view>
-            <view>
-              <button :plain="true" @click.stop="onShare">
-                <view>
-                  <view class="iconfont icon-zhuanfa"></view>
-                  <view>分享</view>
-                </view>
-              </button>
+            <view  @click.stop="onShare()">
+              <view class="iconfont icon-zhuanfa"></view>
+              <view>分享</view>
             </view>
             <view @click="onCollect()">
               <view v-if="exhibit.is_collect" class="iconfont icon-favourites-filled-star-symbol active"></view>
@@ -130,8 +131,12 @@ export default {
     this.getProductInfo()
   },
   created() {
-    this.loadFontFace('Poppins')
     this.getGlobalPollShow()
+    uni.$on('refreshData', (val) => {
+      if (val === 'pages/exhibitor/exhibit-detail') {
+        this.getProductInfo()
+      }
+    })
   },
   methods: {
     onClickAlbum(url) {
@@ -246,11 +251,28 @@ export default {
   }
 
   .exhibit-desc {
-    margin-top: 18rpx;
+    //margin-top: 18rpx;
     font-size: $fontSize3;
     color: #333333;
     line-height: 1.5;
   }
-
+  .exhibitor-info-list {
+    display: flex;
+    align-items: center;
+    grid-gap: 24rpx;
+    margin: 10rpx 0;
+    justify-content: flex-end;
+    //margin-top: 50rpx;
+    .exhibitor-info-item {
+      display: flex;
+      align-items: center;
+      //grid-gap: 12rpx;
+      font-size: $fontSize1;
+      color: #555555;
+      .iconfont {
+        font-size: $fontSize2;
+      }
+    }
+  }
 }
 </style>

+ 16 - 250
pages/exhibitor/exhibit.vue

@@ -19,8 +19,11 @@
 				</view> -->
 				<u-search v-model="searchKeyword" placeholder="搜索关键词" @search="onSearch" />
         <view class="select-box">
-          <view class="select-title item-title">
-            筛选
+          <view class="select-head">
+            <view class="select-title item-title">
+              筛选
+            </view>
+            <view class="select-search-btn" @click="searchList()">搜索</view>
           </view>
           <view class="select-body">
             <view class="select-list">
@@ -35,7 +38,7 @@
               </view>
               <view class="select-module">
                 <view class="select-input" @click="()=>{activeName2 = !activeName2;activeName1=false;}">应用领域</view>
-                <view class="select-option-module second-module" :class="{'active': activeName2}">
+                <view class="select-option-module" :class="{'active': activeName2}">
                   <u-scroll-view :tabbar-conflict="true">
                     <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="dropdown3"
                               @change-event="searchList()"></u-select>
@@ -44,7 +47,7 @@
               </view>
             </view>
           </view>
-          <view class="select-search-btn" @click="searchList()">搜索</view>
+
         </view>
 				<view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
 					<image :src="adInfo.ad_file" mode="widthFix" />
@@ -52,7 +55,7 @@
 				<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"
+						<exhibit-item :item="item" :key="index" :pollShow="pollShow.product_poll_show" @share="onShare()"
 							@updateItemValue="updateItemValue()" />
 					</template>
 				</view>
@@ -146,12 +149,16 @@
 			}
 		},
 		created() {
-			this.loadFontFace('Poppins')
 			this.getProductCategoryList()
 			this.getApplicationAreasList()
-			this.getList()
-			this.getGlobalPollShow(),
-				this.getAdData()
+			this.getGlobalPollShow()
+			this.getAdData()
+      this.getList()
+      uni.$on('refreshData', (val) => {
+        if (val === 'product') {
+          this.getList()
+        }
+      })
 		},
 		methods: {
 			onChange(event) {
@@ -326,246 +333,5 @@
 </script>
 
 <style lang="scss">
-	checkbox {
-		color: #333333;
-		.wx-checkbox-input {
-			width: 26rpx;
-			height: 26rpx;
-
-			&.wx-checkbox-input-checked {
-				background-color: #E57519;
-
-				&::before {
-					content: '';
-				}
-			}
-		}
-
-		&.open {
-			color: #E57519;
-			background-color: #FDF4EB;
-		}
-	}
-
-  .select-box {
-    display: flex;
-    flex-direction: column;
-    background-color: #FFFFFF;
-    border-radius: 21rpx;
-    border: 2rpx dashed #94A3B8;
-    padding: 34rpx 30rpx 54rpx 30rpx;
-    margin-bottom: 42rpx;
-
-    .select-title {
-      margin-bottom: 30rpx;
-    }
-
-    .select-body {
-      display: flex;
-      margin-bottom: 30rpx;
-      position: relative;
-      //height: 100rpx;
-      width: 100%;
-    }
-
-    .select-module {
-      flex: 1;
-      min-width: 1rpx;
-      font-size: $fontSize2;
-      position: relative;
-      .select-input {
-        width: 100%;
-        height: 100%;
-        border: 1rpx solid #B3B3B3;
-        border-radius: 10rpx;
-        padding: 14rpx;
-        position: relative;
-        z-index: 7;
-        background-color: #ffffff;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				&::after {
-					content: '\e60d';
-					font-family: iconfont;
-					font-size: $fontSize2;
-				}
-      }
-      .select-option-module {
-        width: 100%;
-        position: absolute;
-        background-color: #ffffff;
-        left: 0;
-        top: 76rpx;
-        border: 1px solid #B3B3B3;
-        border-radius: 10rpx;
-        height: 0;
-        opacity: 0;
-        transform: translateY(-80rpx);
-        z-index: -10;
-        &:before {
-          content: '';
-          width: 10px;
-          height: 10px;
-          background-color: #ababab;
-          clip-path: polygon(0% 0%, 50% 50%,100% 0% );
-          transform: rotate(180deg);
-          position: absolute;
-          top: -20rpx;
-          left: 0;
-          right: 0;
-          margin-left: auto;
-          margin-right: auto;
-        }
-        /*&.second-module {
-          width: 414rpx;
-          &:before {
-            margin-left: unset;
-            left: 90rpx;
-          }
-        }
-        &.third-module {
-          width: 414rpx;
-          right: 0;
-          left: unset;
-          &:before {
-            margin-right: unset;
-            right: 90rpx;
-          }
-        }*/
-        &.active {
-          transform: translateY(0);;
-          opacity: 1;
-          height: auto;
-          transition: .3s ease-in-out;
-          z-index: 7;
-        }
-        .u-scroll-view {
-          background-color: #ffffff;
-          max-height: 600rpx !important;
-          height: auto !important;
-          overflow: hidden;
-          border-radius: 10rpx;
-
-        }
-      }
-      van-collapse-item {
-        width: 100%;
-        z-index: 7;
-      }
-
-      .van-collapse-item {
-        width: 100%;
-      }
-    }
-
-    .select-list {
-      //position: absolute;
-      //left: 0;
-      //top: 0;
-      width: 100%;
-      height: 100%;
-      display: flex;
-      //align-items: center;
-      grid-gap: 12rpx;
-
-      .van-collapse {
-        display: flex;
-        //flex-direction: column;
-        grid-gap: 10rpx;
-
-        .first-title {
-          & > .van-collapse-item {
-            border-radius: 14rpx;
-            border: 2rpx solid #B3B3B3;
-            overflow: hidden;
-
-            .van-collapse-item__content {
-              padding: unset;
-            }
-
-            van-collapse {
-              .van-collapse-item {
-                border-bottom: 2rpx solid #e3e9f1;
-
-                .van-cell {
-                  grid-gap: 16rpx;
-                  width: 100%;
-
-                  .van-cell__title {
-                    flex: unset;
-                    width: fit-content;
-                  }
-
-                  .van-cell__right-icon-wrap {
-                    font-size: $fontSize0;
-
-                    .van-icon-arrow {
-                      color: #333333;
-
-                      &::before {
-                        content: '\e819';
-                        font-family: iconfont;
-                        font-size: 16rpx;
-                      }
-                    }
-                  }
-                }
-
-                .van-collapse-item__wrapper {
-                  .custom-checkbox {
-                    checkbox {
-                      border: unset;
-                    }
-                  }
-                }
-              }
-
-              &:nth-last-child(1) {
-                .van-collapse-item {
-                  border: unset;
-                }
-              }
-            }
-          }
-
-          .van-cell {
-            padding: 16rpx 20rpx;
-
-            &::after {
-              border-bottom: unset;
-            }
-          }
-        }
-      }
-
-      .van-hairline--top-bottom {
-        &::after {
-          border: unset;
-        }
-      }
-    }
-
-    .select-search-btn {
-      padding: 18rpx 25rpx;
-      border: 1rpx solid #E57519;
-      background-color: #E57519;
-      font-size: $fontSize3;
-      width: 100%;
-      color: #FFFFFF;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      border-radius: 13rpx;
-      grid-gap: 20rpx;
-      font-weight: bold;
 
-      &::before {
-        content: '\e86f';
-        font-size: $fontSize3;
-        font-family: iconfont;
-        font-weight: bold;
-      }
-    }
-  }
 </style>

+ 27 - 343
pages/exhibitor/index.vue

@@ -3,23 +3,6 @@
     <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">
             搜索
@@ -27,8 +10,11 @@
           <u-search v-model="searchKeyword" placeholder="搜索关键词" @search="onSearch"/>
         </view>
         <view class="select-box">
-          <view class="select-title item-title">
-            筛选
+          <view class="select-head">
+            <view class="select-title item-title">
+              筛选
+            </view>
+            <view class="select-search-btn" @click="searchExhibitorsList()">搜索</view>
           </view>
           <view class="select-body">
             <view class="select-list">
@@ -61,75 +47,8 @@
                   </u-scroll-view>
                 </view>
               </view>
-<!--              <view class="select-module">
-                <van-collapse :value="activeName" @change="onChange">
-                  <van-collapse-item class="first-title" title="展馆号" name="searchHall">
-                    <u-select title="展馆号" v-model="searchHall" :data="halls" uId="dropdown1"
-                              @change-event="searchExhibitorsList()" :special="true"></u-select>
-                  </van-collapse-item>
-                </van-collapse>
-              </view>
-              <view class="select-module">
-                <van-collapse :value="activeName" @change="onChange">
-                  <van-collapse-item class="first-title" title="展品分类" name="searchCategoryId">
-                    <u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="dropdown2"
-                              :children="true"
-                              @change-event="searchExhibitorsList()"></u-select>
-                  </van-collapse-item>
-                </van-collapse>
-              </view>
-              <view class="select-module">
-                <van-collapse :value="activeName" @change="onChange">
-                  <van-collapse-item class="first-title" title="应用领域" name="searchApplicationAreas">
-                    <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass"
-                              uId="dropdown3"
-                              @change-event="searchExhibitorsList()"></u-select>
-                  </van-collapse-item>
-                </van-collapse>
-              </view>-->
-              <!--						<van-collapse :value="activeName" @change="onChange">
-                            <van-collapse-item class="first-title" title="展馆号" name="展馆号">
-                              <u-select title="展馆号" v-model="searchHall" :data="halls" uId="dropdown1"
-                                @change-event="searchExhibitorsList()" :special="true"></u-select>
-                            </van-collapse-item>
-                            <van-collapse-item class="first-title" title="展品分类" name="展品分类">
-                              <u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="dropdown2" :children="true"
-                                @change-event="searchExhibitorsList()"></u-select>
-                            </van-collapse-item>
-                            <van-collapse-item class="first-title" title="应用领域" name="应用领域">
-                              <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass" uId="dropdown3"
-                                @change-event="searchExhibitorsList()"></u-select>
-                            </van-collapse-item>
-                          </van-collapse>-->
-<!--              <view class="select-module">
-            <van-collapse :value="activeName" @change="onChange">
-              <van-collapse-item class="first-title" title="展馆号" name="searchHall">
-                <u-select title="展馆号" v-model="searchHall" :data="halls" uId="dropdown1"
-                          @change-event="searchExhibitorsList()" :special="true"></u-select>
-              </van-collapse-item>
-            </van-collapse>
-          </view>
-          <view class="select-module">
-            <van-collapse :value="activeName" @change="onChange">
-              <van-collapse-item class="first-title" title="展品分类" name="searchCategoryId">
-                <u-select title="展品分类" v-model="searchCategoryId" :data="categories" uId="dropdown2"
-                          :children="true"
-                          @change-event="searchExhibitorsList()"></u-select>
-              </van-collapse-item>
-            </van-collapse>
-          </view>
-          <view class="select-module">
-            <van-collapse :value="activeName" @change="onChange">
-              <van-collapse-item class="first-title" title="应用领域" name="searchApplicationAreas">
-                <u-select title="应用领域" v-model="searchApplicationAreas" :data="applicationAreass"
-                          uId="dropdown3"
-                          @change-event="searchExhibitorsList()"></u-select>
-              </van-collapse-item>
-            </van-collapse>
-          </view>-->
             </view>
           </view>
-          <view class="select-search-btn" @click="searchExhibitorsList()">搜索</view>
         </view>
         <view class="ad-space" @tap="navigateToAdLink(adInfo.ad_link)">
           <image :src="adInfo.ad_file" mode="widthFix"/>
@@ -138,7 +57,7 @@
         <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()"/>
+                            @share="onShare()" @updateItemValue="updateItemValue()"/>
           </template>
         </view>
         <u-pagination :pageSize="exhibitorsParams.page_size" :total="total" @page-change="handlePageChange()"
@@ -147,6 +66,7 @@
       </view>
     </u-scroll-view>
     <float-button></float-button>
+    <u-share-action-sheet :show.sync="showShare" :show-info="shareInfo" />
   </page-layout>
 </template>
 
@@ -159,6 +79,8 @@ import UPagination from '@/components/common/u-pagination/index.vue'
 import UDropdownSelect from '@/components/common/u-dropdown-select'
 import ExhibitorItem from '@/pages/exhibitor/components/exhibitor-item.vue'
 import floatButton from "@/components/layout/float-button"
+import UShareActionSheet from '@/components/common/u-share-action-sheet'
+
 import {
   exhibitorsList,
   productCategoryList,
@@ -177,9 +99,13 @@ import dropdownItem from '@/wxcomponents/vant/dropdown-item/index'
 import dropdownMenu from '@/wxcomponents/vant/dropdown-menu/index'
 
 export default {
+
   options: {
     styleIsolation: 'shared'
   },
+  onShow(val) {
+    console.log('onBackPress',val)
+  },
   components: {
     PageLayout,
     NavBar,
@@ -194,13 +120,16 @@ export default {
     vanCollapse,
     vanCollapseItem,
     dropdownItem,
-    dropdownMenu
+    dropdownMenu,
+    UShareActionSheet
   },
   data() {
     return {
       activeName1: false,
       activeName2: false,
       activeName3: false,
+      showShare: false,
+      shareInfo: null,
       searchCategoryId: '',
       searchHall: '',
       searchApplicationAreas: '',
@@ -232,15 +161,23 @@ export default {
     }
   },
   created() {
-    this.loadFontFace('Poppins')
     this.getProductCategoryList()
     this.getExhibitorsHallList()
     this.getApplicationAreasList()
-    this.getExhibitorsList()
     this.getGlobalPollShow()
     this.getAdData()
+    this.getExhibitorsList()
+    uni.$on('refreshData', (val) => {
+      if (val === 'exhibitor') {
+        this.getExhibitorsList()
+      }
+    })
   },
   methods: {
+    onShare(e) {
+      this.shareInfo = e.detail
+      this.showShare = true
+    },
     onChange(event) {
       this.activeName = event
     },
@@ -418,258 +355,5 @@ export default {
 </script>
 
 <style lang="scss">
-checkbox {
-  color: #333333;
-
-  .wx-checkbox-input {
-    width: 26rpx;
-    height: 26rpx;
-
-    &.wx-checkbox-input-checked {
-      background-color: #E57519;
-
-      &::before {
-        content: '';
-      }
-    }
-  }
-
-  &.open {
-    color: #E57519;
-    background-color: #FDF4EB;
-  }
-}
-
-.exhibitor-index {
-  .item-title {
-    font-size: $fontSize4;
-    font-weight: bold;
-
-    &.select-title {
-      color: #E57519;
-    }
-  }
-
-  .select-box {
-    display: flex;
-    flex-direction: column;
-    background-color: #FFFFFF;
-    border-radius: 21rpx;
-    border: 2rpx dashed #94A3B8;
-    padding: 34rpx 30rpx 54rpx 30rpx;
-    margin-bottom: 42rpx;
-
-    .select-title {
-      margin-bottom: 30rpx;
-    }
-
-    .select-body {
-      display: flex;
-      margin-bottom: 30rpx;
-      position: relative;
-      //height: 100rpx;
-      width: 100%;
-    }
-
-    .select-module {
-      flex: 1;
-      min-width: 1rpx;
-      font-size: $fontSize2;
-      position: relative;
-      .select-input {
-        width: 100%;
-        height: 100%;
-        border: 1rpx solid #B3B3B3;
-        border-radius: 10rpx;
-        padding: 14rpx;
-        position: relative;
-        z-index: 7;
-        background-color: #ffffff;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				&::after {
-					content: '\e60d';
-					font-family: iconfont;
-					font-size: $fontSize2;
-				}
-      }
-      .select-option-module {
-        width: 100%;
-        position: absolute;
-        background-color: #ffffff;
-        left: 0;
-        top: 76rpx;
-        border: 1px solid #B3B3B3;
-        border-radius: 10rpx;
-        height: 0;
-        opacity: 0;
-        transform: translateY(-80rpx);
-        z-index: -10;
-        &:before {
-          content: '';
-          width: 10px;
-          height: 10px;
-          background-color: #ababab;
-          clip-path: polygon(0% 0%, 50% 50%,100% 0% );
-          transform: rotate(180deg);
-          position: absolute;
-          top: -20rpx;
-          left: 0;
-          right: 0;
-          margin-left: auto;
-          margin-right: auto;
-        }
-        &.second-module {
-          width: 414rpx;
-          &:before {
-            margin-left: unset;
-            left: 90rpx;
-          }
-        }
-        &.third-module {
-          width: 414rpx;
-          right: 0;
-          left: unset;
-          &:before {
-            margin-right: unset;
-            right: 90rpx;
-          }
-        }
-        &.active {
-          transform: translateY(0);;
-          opacity: 1;
-          height: auto;
-          transition: .3s ease-in-out;
-          z-index: 7;
-        }
-        .u-scroll-view {
-          background-color: #ffffff;
-          max-height: 600rpx !important;
-          height: auto !important;
-          overflow: hidden;
-          border-radius: 10rpx;
-
-        }
-      }
-      van-collapse-item {
-        width: 100%;
-        z-index: 7;
-      }
-
-      .van-collapse-item {
-        width: 100%;
-      }
-    }
-
-    .select-list {
-      //position: absolute;
-      //left: 0;
-      //top: 0;
-      width: 100%;
-      height: 100%;
-      display: flex;
-      //align-items: center;
-      grid-gap: 12rpx;
-
-      .van-collapse {
-        display: flex;
-        //flex-direction: column;
-        grid-gap: 10rpx;
-
-        .first-title {
-          & > .van-collapse-item {
-            border-radius: 14rpx;
-            border: 2rpx solid #B3B3B3;
-            overflow: hidden;
-
-            .van-collapse-item__content {
-              padding: unset;
-            }
-
-            van-collapse {
-              .van-collapse-item {
-                border-bottom: 2rpx solid #e3e9f1;
-
-                .van-cell {
-                  grid-gap: 16rpx;
-                  width: 100%;
-
-                  .van-cell__title {
-                    flex: unset;
-                    width: fit-content;
-                  }
 
-                  .van-cell__right-icon-wrap {
-                    font-size: $fontSize0;
-
-                    .van-icon-arrow {
-                      color: #333333;
-
-                      &::before {
-                        content: '\e819';
-                        font-family: iconfont;
-                        font-size: 16rpx;
-                      }
-                    }
-                  }
-                }
-
-                .van-collapse-item__wrapper {
-                  .custom-checkbox {
-                    checkbox {
-                      border: unset;
-                    }
-                  }
-                }
-              }
-
-              &:nth-last-child(1) {
-                .van-collapse-item {
-                  border: unset;
-                }
-              }
-            }
-          }
-
-          .van-cell {
-            padding: 16rpx 20rpx;
-
-            &::after {
-              border-bottom: unset;
-            }
-          }
-        }
-      }
-
-      .van-hairline--top-bottom {
-        &::after {
-          border: unset;
-        }
-      }
-    }
-
-    .select-search-btn {
-      padding: 18rpx 25rpx;
-      border: 1rpx solid #E57519;
-      background-color: #E57519;
-      font-size: $fontSize3;
-      width: 100%;
-      color: #FFFFFF;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      border-radius: 13rpx;
-      grid-gap: 20rpx;
-      font-weight: bold;
-
-      &::before {
-        content: '\e86f';
-        font-size: $fontSize3;
-        font-family: iconfont;
-        font-weight: bold;
-      }
-    }
-  }
-}
 </style>

+ 10 - 2
pages/index/components/contact-us.vue

@@ -35,13 +35,21 @@
 			show: Boolean,
 			qrcode_url: String
 		},
+    watch: {
+      show(val){
+        if (val) {
+          this.getBuoyData()
+        }
+      }
+    },
 		data() {
 			return {
+        loading: false,
 				buoyInfo: {}
 			}
 		},
 		created() {
-			this.getBuoyData()
+			// this.getBuoyData()
 		},
 		methods: {
 			onClickClose() {
@@ -50,7 +58,7 @@
 			getBuoyData() {
 			  getBuoyInfo().then(res => {
 					this.buoyInfo = res.data
-					console.log(this.buoyInfo);
+					// console.log(this.buoyInfo);
 			  })
 			}
 		}

+ 12 - 6
pages/index/home.vue

@@ -225,13 +225,19 @@
 				this.isShow = false
 			},
 			onClickNavIcon(item) {
-        this.navigateTo(item.link)
-				/*if (item.link === '/pages/exhibitor/index') {
+        // this.navigateTo(item.link)
+				if (item.link === '/pages/exhibitor/index') {
 					this.$emit('switch-tab', 'exhibitor')
-					return
-				} else {
+          this.$store.commit('SET_PAGE', 'exhibitor');
+        } else if (item.link === '/pages/activity/index') {
+          this.$emit('switch-tab', 'activity')
+          this.$store.commit('SET_PAGE', 'activity');
+        } else if(item.link === '/pages/exhibitor/exhibit') {
+          this.$emit('switch-tab', 'product')
+          this.$store.commit('SET_PAGE', 'product');
+        } else {
 					this.navigateTo(item.link)
-				}*/
+				}
 			},
 			onClickSearch() {
 				this.navigateTo('/pages/index/search?query=' + this.searchKeyword)
@@ -299,7 +305,7 @@
 		.img-btn-box {
 			display: flex;
 			justify-content: center;
-			width: 678rpx;
+			width: 600rpx;
 			position: relative;
 
 			.ad-space {

+ 17 - 4
pages/index/index.vue

@@ -1,9 +1,10 @@
 <template>
   <view>
-    <home v-if="tabbarActive === 'home'" @switch-tab="tabbarActive = 'exhibitor'" />
-    <exhibitor v-if="tabbarActive === 'exhibitor'" @share="onShare" />
+    <home v-if="tabbarActive === 'home'" @switch-tab="switchTab" />
+    <exhibitor v-if="tabbarActive === 'exhibitor'"  @share="onShare" />
     <activity v-if="tabbarActive === 'activity'" />
     <user v-if="tabbarActive === 'user'" />
+    <product v-if="tabbarActive === 'product'"></product>
     <van-dialog id="van-dialog" />
     <tab-bar :active.sync="tabbarActive"></tab-bar>
     <u-share-action-sheet :show.sync="showShare" :show-info="shareInfo" />
@@ -18,7 +19,7 @@
 	import Activity from '@/pages/activity/index.vue'
 	import User from '@/pages/user/index.vue'
   import PageLayout from "@/components/layout/page-layout";
-
+  import Product from "@/pages/exhibitor/exhibit"
 	export default {
 		options: {
 			styleIsolation: 'shared'
@@ -30,8 +31,17 @@
 			Exhibitor,
 			Activity,
 			User,
-			UShareActionSheet
+			UShareActionSheet,
+      Product
 		},
+    watch: {
+      '$store.getters.page': {
+        handler(val) {
+          this.tabbarActive = val[val.length-1]
+
+        }
+      }
+    },
 		data() {
 			return {
 				tabbarActive: 'home',
@@ -48,6 +58,9 @@
 
 		},
 		methods: {
+      switchTab(active) {
+        this.tabbarActive = active
+      },
 			onShare(e) {
 				this.shareInfo = e.detail
 				this.showShare = true

+ 364 - 343
pages/index/search.vue

@@ -6,380 +6,401 @@
         <u-search v-model="searchKeyword" placeholder="搜索关键词" @search="onClickSearch"/>
         <view class="search-result-text">搜索结果</view>
         <template v-if="isEmpty">
-          <van-empty description="暂无数据" />
+          <van-empty description="暂无数据"/>
         </template>
         <template v-else>
           <u-tabs :active.sync="tabActive" :tabs="tabs" tab-style="default" @change="tabChange"/>
-          <view v-if="tabActive === 1" class="search-result-list exhibit-list">
+          <view v-if="tabActive === 1 && exhibitorList.length >0" class="search-result-list exhibit-list">
             <template v-for="(item, index) in exhibitorList">
-              <exhibitor-item :item="item" :key="index" :pollShow="pollShow.exhibitors_poll_show" @share="onShare()" @updateItemValue="updateItemValue()"/>
+              <exhibitor-item :item="item" :key="index" :pollShow="pollShow.exhibitors_poll_show" @share="onShare()"
+                              @updateItemValue="updateItemValue()"/>
             </template>
           </view>
-          <view v-else-if="tabActive === 2" class="search-result-list exhibit-list">
+          <view v-if="tabActive === 2 && exhibitList.length >0" class="search-result-list exhibit-list">
             <template v-for="(item, index) in exhibitList">
-              <exhibit-item :item="item" :key="index" :pollShow="pollShow.product_poll_show" @share="onShare()" @updateItemValue="updateItemValue()"/>
+              <exhibit-item :item="item" :key="index" :pollShow="pollShow.product_poll_show" @share="onShare()"
+                            @updateItemValue="updateItemValue()"/>
             </template>
           </view>
-          <view v-else-if="tabActive === 3" class="search-result-list exhibit-list">
+          <view v-if="tabActive === 3 && newsList.length >0" class="search-result-list exhibit-list">
             <template v-for="(item, index) in newsList">
-              <news-item :item="item" :key="index" type="exhibitor" />
+              <news-item :item="item" :key="'news' + index" type="exhibitor"/>
             </template>
           </view>
-          <view v-else-if="tabActive === 4" class="search-result-list exhibit-list">
+          <view v-if="tabActive === 4 && activityList.length >0" class="search-result-list exhibit-list">
             <template v-for="(item, index) in activityList">
               <activity-item type="exhibitor" :item="item" :key="index" @updateItemValue="updateItemValue()"/>
             </template>
           </view>
-          <view v-else-if="tabActive === 5" class="search-result-list exhibit-list">
+          <view v-if="tabActive === 5 && mettingList.length >0" class="search-result-list exhibit-list">
             <template v-for="(item, index) in mettingList">
-              <activity-item :item="item" :key="index" platform="metting" @updateItemValue="updateItemValue()"/>
+              <activity-item :item="item" :key="'meeting' + index" platform="meeting"
+                             @updateItemValue="updateItemValue()"/>
             </template>
           </view>
         </template>
         <disclaimer-text></disclaimer-text>
       </view>
     </u-scroll-view>
-    <u-share-action-sheet :show.sync="showShare" :show-info="shareInfo" />
+    <u-share-action-sheet :show.sync="showShare" :show-info="shareInfo"/>
   </page-layout>
 </template>
 
 <script>
-	import NavBar from '@/components/layout/nav-bar'
-	import UTabs from '@/components/common/u-tabs'
-	import UScrollView from '@/components/common/u-scroll-view'
-	import UShareActionSheet from '@/components/common/u-share-action-sheet'
-	import USearch from '@/components/common/u-search'
-	import ExhibitItem from '@/pages/exhibitor/components/exhibit-item.vue'
-	import ExhibitorItem from '@/pages/exhibitor/components/exhibitor-item.vue'
-	import NewsItem from '@/pages/news/components/news-item.vue'
-	import ActivityItem from '@/pages/activity/components/activity-item.vue'
+import NavBar from '@/components/layout/nav-bar'
+import UTabs from '@/components/common/u-tabs'
+import UScrollView from '@/components/common/u-scroll-view'
+import UShareActionSheet from '@/components/common/u-share-action-sheet'
+import USearch from '@/components/common/u-search'
+import ExhibitItem from '@/pages/exhibitor/components/exhibit-item.vue'
+import ExhibitorItem from '@/pages/exhibitor/components/exhibitor-item.vue'
+import NewsItem from '@/pages/news/components/news-item.vue'
+import ActivityItem from '@/pages/activity/components/activity-item.vue'
 
-	import { globalSearch, mettingList, exhibitorsList, exhibitorsProductList, exhibitorsNewsList, exhibitorsBoothActivityList, globalPollShow } from '@/api/exhibitor'
-	import DisclaimerText from '@/components/disclaimer-text/index.vue'
-  import PageLayout from "@/components/layout/page-layout";
-	export default {
-		options: {
-			styleIsolation: 'shared'
-		},
-		components: {
-      PageLayout,
-			NavBar,
-			UScrollView,
-			UTabs,
-			USearch,
-			ExhibitItem,
-			ExhibitorItem,
-			NewsItem,
-			ActivityItem,
-			DisclaimerText,
-			UShareActionSheet
-		},
-		data() {
-			return {
-				searchKeyword: '',
-				tabActive: 1,
-				isEmpty: false,
-				defaultTabs: [{
-					label: '展商',
-					value: 1
-				}, {
-					label: '展品',
-					value: 2
-				}, {
-					label: '展商新闻',
-					value: 3
-				}, {
-					label: '展商活动',
-					value: 4
-				}, {
-					label: '同期活动',
-					value: 5
-				}],
-				tabs: [],
-				exhibitorList: [],
-				exhibitorListLoading: false,
-				exhibitorListLastPage: 1,
-				exhibitorListParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				exhibitList: [],
-				exhibitListLoading: false,
-				exhibitListLastPage: 1,
-				exhibitListParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				newsList: [],
-				newsListLoading: false,
-				newsListLastPage: 1,
-				newsListParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				activityList: [],
-				activityListLoading: false,
-				activityListLastPage: 1,
-				activityListParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				mettingList: [],
-				mettingListLoading: false,
-				mettingListLastPage: 1,
-				mettingListParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				listParams: {
-					page: 1,
-					page_size: 10,
-					keyword: ''
-				},
-				pollShow: {
-					exhibitors_poll_show: 0,
-					product_poll_show: 0
-				},
-				showShare: false,
-				shareInfo: null,
-			}
-		},
-		onLoad(options) {
-			this.searchKeyword = options.query
-			this.onClickSearch()
-		},
-		created() {
-			this.getGlobalPollShow()
-		},
-		methods: {
-			tabChange() {
+import {
+  globalSearch,
+  mettingList,
+  exhibitorsList,
+  exhibitorsProductList,
+  exhibitorsNewsList,
+  exhibitorsBoothActivityList,
+  globalPollShow
+} from '@/api/exhibitor'
+import DisclaimerText from '@/components/disclaimer-text/index.vue'
+import PageLayout from "@/components/layout/page-layout";
 
-			},
-			onClickSearch() {
+export default {
+  options: {
+    styleIsolation: 'shared'
+  },
+  components: {
+    PageLayout,
+    NavBar,
+    UScrollView,
+    UTabs,
+    USearch,
+    ExhibitItem,
+    ExhibitorItem,
+    NewsItem,
+    ActivityItem,
+    DisclaimerText,
+    UShareActionSheet
+  },
+  data() {
+    return {
+      searchKeyword: '',
+      tabActive: 1,
+      isEmpty: false,
+      defaultTabs: [{
+        label: '展商',
+        value: 1
+      }, {
+        label: '展品',
+        value: 2
+      }, {
+        label: '展商新闻',
+        value: 3
+      }, {
+        label: '展商活动',
+        value: 4
+      }, {
+        label: '同期活动',
+        value: 5
+      }],
+      tabs: [],
+      exhibitorList: [],
+      exhibitorListLoading: false,
+      exhibitorListLastPage: 1,
+      exhibitorListParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      exhibitList: [],
+      exhibitListLoading: false,
+      exhibitListLastPage: 1,
+      exhibitListParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      newsList: [],
+      newsListLoading: false,
+      newsListLastPage: 1,
+      newsListParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      activityList: [],
+      activityListLoading: false,
+      activityListLastPage: 1,
+      activityListParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      mettingList: [],
+      mettingListLoading: false,
+      mettingListLastPage: 1,
+      mettingListParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      listParams: {
+        page: 1,
+        page_size: 10,
+        keyword: ''
+      },
+      pollShow: {
+        exhibitors_poll_show: 0,
+        product_poll_show: 0
+      },
+      showShare: false,
+      shareInfo: null,
+    }
+  },
+  onLoad(options) {
+    this.searchKeyword = options.query
+    this.onClickSearch()
+  },
+  created() {
+    this.getGlobalPollShow()
+  },
+  mounted() {
 
-				this.listParams.page = 1
-				this.listParams.keyword = this.searchKeyword
-				this.exhibitorListParams = {...this.listParams}
-				this.exhibitListParams = {...this.listParams}
-				this.newsListParams = {...this.listParams}
-				this.activityListParams = {...this.listParams}
-				this.mettingListParams = {...this.listParams}
-				this.tabs = [...this.defaultTabs]
-				this.getGlobalSearch()
-				this.getMettingList()
-			},
-			getGlobalSearch() { // 全局搜索
-				globalSearch(this.listParams).then(res => {
-					if (res.code === 0) {
-						this.exhibitorList = res.data.exhibitors_list.data ?? []
-						this.exhibitorListLastPage = res.data.exhibitors_list.last_page ?? 1
-						this.exhibitList = res.data.product_list.data ?? []
-						this.exhibitListLastPage = res.data.product_list.last_page ?? 0
-						this.newsList = res.data.news_list.data ?? []
-						this.newsListLastPage = res.data.news_list.last_page ?? 0
-						this.activityList = res.data.booth_activity_list.data ?? []
-						this.activityListLastPage = res.data.booth_activity_list.last_page ?? 0
-						if (this.exhibitorList.length === 0) {
-							this.tabs = this.tabs.filter(item => item.value !== 1);
-						}
-						if (this.exhibitList.length === 0) {
-							this.tabs = this.tabs.filter(item => item.value !== 2);
-						}
-						if (this.newsList.length === 0) {
-							this.tabs = this.tabs.filter(item => item.value !== 3);
-						}
-						if (this.activityList.length === 0) {
-							this.tabs = this.tabs.filter(item => item.value !== 4);
-						}
-					}
-				})
-			},
-			getExhibitorsList() { // 展商
-				this.exhibitorListLoading = true
-				exhibitorsList(this.exhibitorListParams).then(res => {
-					if (res.data.data) {
-						if (this.exhibitorListParams.page > 1) {
-							this.exhibitorList = [...this.exhibitorList, ...res.data.data]
-						} else {
-							this.exhibitorList = res.data.data
-							this.exhibitorListLastPage = res.data.last_page
-						}
-					} else {
-						this.showToast('系统繁忙,稍候再试')
-					}
-					this.exhibitorListLoading = false
-				})
-			},
-			getExhibitList() { // 展品
-				this.exhibitListLoading = true
-				exhibitorsProductList(this.exhibitListParams).then(res => {
-					if (res.data.data) {
-						if (this.exhibitListParams.page > 1) {
-							this.exhibitList = [...this.exhibitList, ...res.data.data]
-						} else {
-							this.exhibitList = res.data.data
-							this.exhibitListLastPage = res.data.last_page
-						}
-					} else {
-						this.showToast('系统繁忙,稍候再试')
-					}
-					this.exhibitListLoading = false
-				})
-			},
-			getExhibitorsNewsList() { // 展商新闻
-				this.newsListLoading = true
-				exhibitorsNewsList(this.newsListParams).then(res => {
-					if (res.data.data) {
-						if (this.newsListParams.page > 1) {
-							this.newsList = [...this.newsList, ...res.data.data]
-						} else {
-							this.newsList = res.data.data
-							this.newsListLastPage = res.data.last_page
-						}
-					} else {
-						this.showToast('系统繁忙,稍候再试')
-					}
-					this.newsListLoading = false
-				})
-			},
-			getActivityList() { // 展台活动
-				this.activityListLoading = true
-				exhibitorsBoothActivityList(this.activityListParams).then(res => {
-					if (res.data.data) {
-						if (this.activityListParams.page > 1) {
-							this.activityList = [...this.activityList, ...res.data.data]
-						} else {
-							this.activityList = res.data.data
-							this.activityListLastPage = res.data.last_page
-						}
-					} else {
-						this.showToast('系统繁忙,稍候再试')
-					}
-					this.activityListLoading = false
-				})
-			},
-			getMettingList() { // 同期活动
-				this.mettingListLoading = true
-				mettingList(this.mettingListParams).then(res => {
-					if (res.data.data) {
-						if (this.mettingListParams.page > 1) {
-							this.mettingList = [...this.mettingList, ...res.data.data]
-						} else {
-							this.mettingList = res.data.data
-							this.mettingListLastPage = res.data.last_page
-						}
-						if (this.mettingListParams.page === 1 && this.mettingList.length === 0) {
-							this.tabs = this.tabs.filter(item => item.value !== 5);
-						}
-					} else {
-						this.showToast('系统繁忙,稍候再试')
-					}
-					this.mettingListLoading = false
-				})
-			},
-			onScrollToLower(e) {
-				if (this.tabActive === 1) {
-					if (this.exhibitorListLastPage === this.exhibitorListParams.page) return
-					if (this.exhibitorListLoading === true) return
-					this.exhibitorListLoading = true
-					this.exhibitorListParams.page = this.exhibitorListParams.page+1
-					this.getExhibitorsList()
-				} else if (this.tabActive === 2) {
-					if (this.exhibitListLastPage === this.exhibitListParams.page) return
-					if (this.exhibitListLoading === true) return
-					this.exhibitListLoading = true
-					this.exhibitListParams.page = this.exhibitListParams.page+1
-					this.getExhibitList()
-				} else if (this.tabActive === 3) {
-					if (this.newsListLastPage === this.newsListParams.page) return
-					if (this.newsListLoading === true) return
-					this.newsListLoading = true
-					this.newsListParams.page = this.newsListParams.page+1
-					this.getExhibitorsNewsList()
-				} else if (this.tabActive === 4) {
-					if (this.activityListLastPage === this.activityListParams.page) return
-					if (this.activityListLoading === true) return
-					this.activityListLoading = true
-					this.activityListParams.page = this.activityListParams.page+1
-					this.getActivityList()
-				} else if (this.tabActive === 5) {
-					if (this.mettingListLastPage === this.mettingListParams.page) return
-					if (this.mettingListLoading === true) return
-					this.mettingListLoading = true
-					this.mettingListParams.page = this.mettingListParams.page+1
-					this.getMettingList()
-				}
-			},
-			updateItemValue(e) {
-				if (this.tabActive === 1) {
-					this.exhibitorList.forEach((item) => {
-						if (item.id === e.id) {
-							item[e.key] = e.value
-						}
-					})
-				} else if (this.tabActive === 2) {
-					this.exhibitList.forEach((item) => {
-						if (item.id === e.id) {
-							item[e.key] = e.value
-						}
-					})
-				} else if (this.tabActive === 4) {
-					this.activityList.forEach((item) => {
-						if (item.id === e.id) {
-							item[e.key] = e.value
-						}
-					})
-				} else if (this.tabActive === 5) {
-					this.mettingList.forEach((item) => {
-						if (item.id === e.id) {
-							item[e.key] = e.value
-						}
-					})
-				}
-			},
-			getGlobalPollShow() {
-				globalPollShow().then(res => {
-					this.pollShow = res.data
-				})
-			},
-			onShare(e) {
-				this.shareInfo = e.detail
-				this.showShare = true
-			},
-			onShareAppMessage: function (res) {
-				if (res.from === 'button') {
-					if (this.shareInfo) {
-						return this.shareInfo
-					}
-				}
-				this.shareInfo = null
-				this.showShare = false
-				return {
-					title: '慕尼黑上海电子生产设备展',
-					path: '/pages/index/index',
-					imageUrl: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da5a7dd374.png?x-oss-process=image/resize,w_600,h_600,limit_0,m_pad'
-				}
-			}
-		}
-	}
+  },
+  methods: {
+    tabChange() {
+
+    },
+    onClickSearch() {
+
+      this.listParams.page = 1
+      this.listParams.keyword = this.searchKeyword
+      this.exhibitorListParams = {...this.listParams}
+      this.exhibitListParams = {...this.listParams}
+      this.newsListParams = {...this.listParams}
+      this.activityListParams = {...this.listParams}
+      this.mettingListParams = {...this.listParams}
+      this.tabs = [...this.defaultTabs]
+      this.getGlobalSearch()
+      this.getMettingList()
+    },
+    getGlobalSearch() { // 全局搜索
+      this.tabActive = 0
+      globalSearch(this.listParams).then(res => {
+        if (res.code === 0) {
+          this.exhibitorList = res.data.exhibitors_list.data ?? []
+          this.exhibitorListLastPage = res.data.exhibitors_list.last_page ?? 1
+          this.exhibitList = res.data.product_list.data ?? []
+          this.exhibitListLastPage = res.data.product_list.last_page ?? 0
+          this.newsList = res.data.news_list.data ?? []
+          this.newsListLastPage = res.data.news_list.last_page ?? 0
+          this.activityList = res.data.booth_activity_list.data ?? []
+          this.activityListLastPage = res.data.booth_activity_list.last_page ?? 0
+
+          if (this.exhibitorList.length === 0) {
+            this.tabs = this.tabs.filter(item => item.value !== 1);
+          }
+          if (this.exhibitList.length === 0) {
+            this.tabs = this.tabs.filter(item => item.value !== 2);
+          }
+          if (this.newsList.length === 0) {
+            this.tabs = this.tabs.filter(item => item.value !== 3);
+          }
+          if (this.activityList.length === 0) {
+            this.tabs = this.tabs.filter(item => item.value !== 4);
+          }
+          if (this.tabs.length > 0) {
+            this.tabActive = this.tabs[0].value
+          }
+        }
+      })
+    },
+    getExhibitorsList() { // 展商
+      this.exhibitorListLoading = true
+      exhibitorsList(this.exhibitorListParams).then(res => {
+        if (res.data.data) {
+          if (this.exhibitorListParams.page > 1) {
+            this.exhibitorList = [...this.exhibitorList, ...res.data.data]
+          } else {
+            this.exhibitorList = res.data.data
+            this.exhibitorListLastPage = res.data.last_page
+          }
+        } else {
+          this.showToast('系统繁忙,稍候再试')
+        }
+        this.exhibitorListLoading = false
+      })
+    },
+    getExhibitList() { // 展品
+      this.exhibitListLoading = true
+      exhibitorsProductList(this.exhibitListParams).then(res => {
+        if (res.data.data) {
+          if (this.exhibitListParams.page > 1) {
+            this.exhibitList = [...this.exhibitList, ...res.data.data]
+          } else {
+            this.exhibitList = res.data.data
+            this.exhibitListLastPage = res.data.last_page
+          }
+        } else {
+          this.showToast('系统繁忙,稍候再试')
+        }
+        this.exhibitListLoading = false
+      })
+    },
+    getExhibitorsNewsList() { // 展商新闻
+      this.newsListLoading = true
+      exhibitorsNewsList(this.newsListParams).then(res => {
+        if (res.data.data) {
+          if (this.newsListParams.page > 1) {
+            this.newsList = [...this.newsList, ...res.data.data]
+          } else {
+            this.newsList = res.data.data
+            this.newsListLastPage = res.data.last_page
+          }
+        } else {
+          this.showToast('系统繁忙,稍候再试')
+        }
+        this.newsListLoading = false
+      })
+    },
+    getActivityList() { // 展台活动
+      this.activityListLoading = true
+      exhibitorsBoothActivityList(this.activityListParams).then(res => {
+        if (res.data.data) {
+          if (this.activityListParams.page > 1) {
+            this.activityList = [...this.activityList, ...res.data.data]
+          } else {
+            this.activityList = res.data.data
+            this.activityListLastPage = res.data.last_page
+          }
+        } else {
+          this.showToast('系统繁忙,稍候再试')
+        }
+        this.activityListLoading = false
+      })
+    },
+    getMettingList() { // 同期活动
+      this.mettingListLoading = true
+      mettingList(this.mettingListParams).then(res => {
+        if (res.data.data) {
+          if (this.mettingListParams.page > 1) {
+            this.mettingList = [...this.mettingList, ...res.data.data]
+          } else {
+            this.mettingList = res.data.data
+            this.mettingListLastPage = res.data.last_page
+          }
+          if (this.mettingListParams.page === 1 && this.mettingList.length === 0) {
+            this.tabs = this.tabs.filter(item => item.value !== 5);
+          }
+        } else {
+          this.showToast('系统繁忙,稍候再试')
+        }
+        this.mettingListLoading = false
+      })
+    },
+    onScrollToLower(e) {
+      if (this.tabActive === 1) {
+        if (this.exhibitorListLastPage === this.exhibitorListParams.page) return
+        if (this.exhibitorListLoading === true) return
+        this.exhibitorListLoading = true
+        this.exhibitorListParams.page = this.exhibitorListParams.page + 1
+        this.getExhibitorsList()
+      } else if (this.tabActive === 2) {
+        if (this.exhibitListLastPage === this.exhibitListParams.page) return
+        if (this.exhibitListLoading === true) return
+        this.exhibitListLoading = true
+        this.exhibitListParams.page = this.exhibitListParams.page + 1
+        this.getExhibitList()
+      } else if (this.tabActive === 3) {
+        if (this.newsListLastPage === this.newsListParams.page) return
+        if (this.newsListLoading === true) return
+        this.newsListLoading = true
+        this.newsListParams.page = this.newsListParams.page + 1
+        this.getExhibitorsNewsList()
+      } else if (this.tabActive === 4) {
+        if (this.activityListLastPage === this.activityListParams.page) return
+        if (this.activityListLoading === true) return
+        this.activityListLoading = true
+        this.activityListParams.page = this.activityListParams.page + 1
+        this.getActivityList()
+      } else if (this.tabActive === 5) {
+        if (this.mettingListLastPage === this.mettingListParams.page) return
+        if (this.mettingListLoading === true) return
+        this.mettingListLoading = true
+        this.mettingListParams.page = this.mettingListParams.page + 1
+        this.getMettingList()
+      }
+    },
+    updateItemValue(e) {
+      if (this.tabActive === 1) {
+        this.exhibitorList.forEach((item) => {
+          if (item.id === e.id) {
+            item[e.key] = e.value
+          }
+        })
+      } else if (this.tabActive === 2) {
+        this.exhibitList.forEach((item) => {
+          if (item.id === e.id) {
+            item[e.key] = e.value
+          }
+        })
+      } else if (this.tabActive === 4) {
+        this.activityList.forEach((item) => {
+          if (item.id === e.id) {
+            item[e.key] = e.value
+          }
+        })
+      } else if (this.tabActive === 5) {
+        this.mettingList.forEach((item) => {
+          if (item.id === e.id) {
+            item[e.key] = e.value
+          }
+        })
+      }
+    },
+    getGlobalPollShow() {
+      globalPollShow().then(res => {
+        this.pollShow = res.data
+      })
+    },
+    onShare(e) {
+      this.shareInfo = e.detail
+      this.showShare = true
+    },
+    onShareAppMessage: function (res) {
+      if (res.from === 'button') {
+        if (this.shareInfo) {
+          return this.shareInfo
+        }
+      }
+      this.shareInfo = null
+      this.showShare = false
+      return {
+        title: '慕尼黑上海电子生产设备展',
+        path: '/pages/index/index',
+        imageUrl: 'https://oss.starify.cn/prod/starify/up/0001018678/20241108/672da5a7dd374.png?x-oss-process=image/resize,w_600,h_600,limit_0,m_pad'
+      }
+    }
+  }
+}
 </script>
 
 <style lang="scss">
-	.search-result-text{
-		margin: 33rpx 0;
-		display: block;
-		font-size: $fontSize3;
-		color: #000000;
-	}
-	.search-result-list{
-		display: grid;
-		grid-template-columns: 1fr;
-		grid-row-gap: 28rpx;
-		margin-top: 32rpx;
-	}
+.search-result-text {
+  margin: 33rpx 0;
+  display: block;
+  font-size: $fontSize3;
+  color: #000000;
+}
+
+.search-result-list {
+  display: grid;
+  grid-template-columns: 1fr;
+  grid-row-gap: 28rpx;
+  margin-top: 32rpx;
+}
 </style>

+ 2 - 1
pages/news/components/news-item.vue

@@ -2,7 +2,8 @@
   <view class="news-item" @click="onClickDetail(item)">
     <view class="news-title">{{ item.title }}</view>
     <view class="news-time">
-      <template v-if="(item.publish_time && item.publish_time !== '0000-00-00 00:00:00') || (item.pub_date && item.pub_date !== '0000-00-00 00:00:00')">
+      <template
+          v-if="(item.publish_time && item.publish_time !== '0000-00-00 00:00:00') || (item.pub_date && item.pub_date !== '0000-00-00 00:00:00')">
         {{ formatDate(item.publish_time || item.pub_date) }}
       </template>
     </view>

+ 18 - 14
pages/user/index.vue

@@ -3,7 +3,7 @@
     <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-info" @click="navigateToAdLink('/pages/user/info')">
           <view class="user-avator">
             <image v-if="isLoginState && avatar" :src="avatar"/>
             <van-icon v-else class="icon" name="user"/>
@@ -15,21 +15,21 @@
             </view>
             <view v-if="isLoginState && nickName" class="user-phone">手机号:{{ phone }}</view>
           </view>
-          <view class="user-option" @click="onClickSetting">
+          <view class="user-option" @click.stop="navigateToAdLink('/pages/user/setting')">
             <view class="iconfont icon-setting"></view>
             <view>设置</view>
           </view>
         </view>
         <view class="user-grid-menu">
-          <view hover-class="active" @click="navigateTo('/pages/user/like')">
+          <view hover-class="active" @click="navigateToAdLink('/pages/user/like')">
             <view class="iconfont icon-heart1"></view>
             <view>点赞</view>
           </view>
-          <view hover-class="active" @click="navigateTo('/pages/user/favorites')">
+          <view hover-class="active" @click="navigateToAdLink('/pages/user/favorites')">
             <view class="iconfont icon-Favourites-Add-Large"></view>
             <view>收藏</view>
           </view>
-          <view hover-class="active" @click="navigateTo('/pages/user/vote')">
+          <view hover-class="active" @click="navigateToAdLink('/pages/user/vote')">
             <view class="iconfont icon-xiaochengxu-toupiaoicon"></view>
             <view>投票</view>
           </view>
@@ -40,9 +40,9 @@
         </view>
         <view class="user-list-item">
           <van-cell-group>
-            <van-cell title="隐私政策" is-link @click="navigateTo('/pages/disclaimer/privacy')">
+            <van-cell title="隐私政策" is-link @click="navigateToAdLink('/pages/disclaimer/privacy')">
             </van-cell>
-            <van-cell title="法律信息" is-link @click="navigateTo('/pages/disclaimer/legalNotice')">
+            <van-cell title="法律信息" is-link @click="navigateToAdLink('/pages/disclaimer/legalNotice')">
             </van-cell>
           </van-cell-group>
         </view>
@@ -61,6 +61,7 @@ import VanCell from '@/wxcomponents/vant/cell/index'
 import VanCellGroup from '@/wxcomponents/vant/cell-group/index'
 import PageLayout from "@/components/layout/page-layout";
 import {getAdInfo} from '@/api'
+import store from "@/store";
 
 export default {
   options: {
@@ -113,12 +114,6 @@ export default {
     this.getAdData()
   },
   methods: {
-    onClickSetting() {
-      this.navigateTo('/pages/user/setting')
-    },
-    onClickUserInfo() {
-      this.navigateTo('/pages/user/info')
-    },
     getAdData() {
       getAdInfo({
         number: "UserCenter001"
@@ -127,7 +122,12 @@ export default {
       })
     },
     navigateToAdLink(href) {
-      this.navigateTo(href)
+      if (!store.getters.user) {
+        this.navigateTo('/pages/user/login?redirect=' + encodeURIComponent(href))
+        return false
+      } else {
+        this.navigateTo(href)
+      }
     }
   }
 }
@@ -146,6 +146,9 @@ export default {
     align-items: center;
     grid-gap: 6px;
     font-size: 28rpx;
+    padding-left: 30rpx;
+    height: 100rpx;
+    padding-right: 20rpx;
     .iconfont {
       font-size: 36rpx;
     }
@@ -169,6 +172,7 @@ export default {
   .user-name {
     font-size: 30rpx;
     color: #333333;
+    //height: 100rpx;
   }
 
   .user-phone {

+ 7 - 1
pages/user/login.vue

@@ -5,7 +5,7 @@
       <view class="main-container">
         <view class="user-login-box">
           <view class="user-login-logo">
-            <image src="/static/img/logo.jpg" mode="aspectFill" />
+            <image src="https://oss.productronicachina.com.cn/resources/common/up/0000010000/20241216/675fe6c0afc65.jpg" mode="aspectFill" />
           </view>
           <view class="user-login-button">
             <van-button type="primary" size="large" :open-type="protocolChecked?'getPhoneNumber': ''" @getphonenumber="onPhoneLogin" @click="onPhoneLoginClick">手机号快捷登录</van-button>
@@ -169,6 +169,7 @@
 				return this.protocolChecked
 			},
 			onCancelGetProfile() {
+        // this.refreshData()
 				this.redirectTo(this.redirectUrl || '/pages/user/index')
 			},
 			onConfirmGetProfile(e) {
@@ -176,6 +177,7 @@
 				if (this.redirectUrl) {
 					pagePath += '&redirect=' + encodeURIComponent(this.redirectUrl)
 				}
+        // this.refreshData()
 				this.redirectTo(pagePath)
 			},
 			onCheckChange(checked) {
@@ -209,6 +211,8 @@
 								if (!user.nick_name || !user.avatar) {
 									this.showGetProfile = true
 								} else {
+                  // uni.navigateBack()
+                  // this.refreshData()
 									this.redirectTo(this.redirectUrl || '/pages/user/index')
 								}
 							})
@@ -250,6 +254,8 @@
 							if (!user.nick_name || !user.avatar) {
 								this.showGetProfile = true
 							} else {
+                // uni.navigateBack()
+                // this.refreshData()
 								this.redirectTo(this.redirectUrl || '/pages/user/index')
 							}
 						})

二进制
static/img/logo.jpg


二进制
static/img/logo.png


+ 0 - 1
static/style/pages/exhibit-item.scss

@@ -10,7 +10,6 @@
 		}
 		.exhibitor-name-cn,.exhibitor-name-en{
 			color: #7d7d7d;
-
 			font-size: $fontSize2;
 			font-weight: normal;
 		}

+ 9 - 26
static/style/pages/exhibitor-detail.scss

@@ -40,50 +40,33 @@
     display: flex;
     align-items: center;
     //padding-top: 33rpx;
-    margin-top: 60rpx;
+    //margin-top: 60rpx;
     position: fixed;
     width: 100%;
     left: 0;
     bottom: 0;
-    padding: 40rpx 30rpx;
+    padding: 30rpx;
     background-color: #ffffff;
     z-index: 7;
+    justify-content: flex-end;
+    border-top: 1px solid #eeeeee;
     .exhibitor-action {
       display: grid;
-      grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr 1fr;
       font-size: $fontSize2;
       color: #555555;
-      grid-gap: 25rpx;
+      grid-gap: 45rpx;
+      width: 100%;
       & > view {
         display: flex;
         align-items: center;
         white-space: nowrap;
         cursor: pointer;
-
-        &:first-child {
-          cursor: default;
-        }
-      }
-
-      button {
-        font-size: $fontSize2;
-        white-space: nowrap;
-        line-height: inherit;
-        background-color: transparent;
-        border: none;
-        padding: unset;
-        margin: unset;
-
-        view {
-          display: flex;
-          align-items: center;
-          font-size: $fontSize2;
-        }
       }
 
       .iconfont {
-        font-size: 28rpx;
-        margin-right: 4rpx;
+        font-size: 30rpx;
+        margin-right: 9rpx;
       }
     }
 

+ 226 - 0
static/style/pages/exhibitor.scss

@@ -28,4 +28,230 @@
 			width: 100%;
 		}
 	}
+	.select-box {
+		display: flex;
+		flex-direction: column;
+		background-color: #FFFFFF;
+		border-radius: 21rpx;
+		border: 2rpx dashed #94A3B8;
+		padding: 34rpx 30rpx 54rpx 30rpx;
+		margin-bottom: 42rpx;
+		.item-title {
+			font-size: $fontSize4;
+			font-weight: bold;
+
+			&.select-title {
+				color: $textActionColor
+			}
+		}
+		.select-head {
+			display: flex;
+			align-items: flex-start;
+			justify-content: space-between;
+			margin-bottom: 20rpx;
+		}
+		.select-body {
+			display: flex;
+			//margin-bottom: 30rpx;
+			position: relative;
+			//height: 100rpx;
+			width: 100%;
+		}
+
+		.select-module {
+			flex: 1;
+			min-width: 1rpx;
+			font-size: $fontSize2;
+			position: relative;
+			van-collapse-item {
+				width: 100%;
+			}
+			.select-input {
+				width: 100%;
+				height: 100%;
+				border: 1rpx solid #B3B3B3;
+				border-radius: 10rpx;
+				padding: 14rpx;
+				position: relative;
+				z-index: 7;
+				background-color: #ffffff;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				&::after {
+					content: '\e60d';
+					font-family: iconfont;
+					font-size: $fontSize2;
+				}
+			}
+			.select-option-module {
+				width: 100%;
+				position: absolute;
+				background-color: #ffffff;
+				left: 0;
+				top: 76rpx;
+				border: 1px solid #B3B3B3;
+				border-radius: 10rpx;
+				height: 0;
+				opacity: 0;
+				transform: translateY(-80rpx);
+				z-index: -10;
+				&:before {
+					content: '';
+					width: 10px;
+					height: 10px;
+					background-color: #ababab;
+					clip-path: polygon(0% 0%, 50% 50%,100% 0% );
+					transform: rotate(180deg);
+					position: absolute;
+					top: -20rpx;
+					left: 0;
+					right: 0;
+					margin-left: auto;
+					margin-right: auto;
+				}
+				&.second-module {
+					width: 414rpx;
+					&:before {
+						margin-left: unset;
+						left: 90rpx;
+					}
+				}
+				&.third-module {
+					width: 414rpx;
+					right: 0;
+					left: unset;
+					&:before {
+						margin-right: unset;
+						right: 90rpx;
+					}
+				}
+				&.active {
+					transform: translateY(0);;
+					opacity: 1;
+					height: auto;
+					transition: .3s ease-in-out;
+					z-index: 7;
+				}
+				.u-scroll-view {
+					background-color: #ffffff;
+					max-height: 600rpx !important;
+					height: auto !important;
+					overflow: hidden;
+					border-radius: 10rpx;
+
+				}
+			}
+		}
+
+		.select-list {
+			//position: absolute;
+			//left: 0;
+			//top: 0;
+			width: 100%;
+			height: 100%;
+			display: flex;
+			//align-items: center;
+			grid-gap: 12rpx;
+
+			.van-collapse {
+				display: flex;
+				//flex-direction: column;
+				grid-gap: 10rpx;
+
+				.first-title {
+					& > .van-collapse-item {
+						border-radius: 14rpx;
+						border: 2rpx solid #B3B3B3;
+						overflow: hidden;
+
+						.van-collapse-item__content {
+							padding: unset;
+						}
+
+						van-collapse {
+							.van-collapse-item {
+								border-bottom: 2rpx solid #e3e9f1;
+
+								.van-cell {
+									grid-gap: 16rpx;
+									width: 100%;
+
+									.van-cell__title {
+										flex: unset;
+										width: fit-content;
+									}
+
+									.van-cell__right-icon-wrap {
+										font-size: $fontSize0;
+
+										.van-icon-arrow {
+											color: #333333;
+
+											&::before {
+												content: '\e819';
+												font-family: iconfont;
+												font-size: 16rpx;
+											}
+										}
+									}
+								}
+
+								.van-collapse-item__wrapper {
+									.custom-checkbox {
+										checkbox {
+											border: unset;
+										}
+									}
+								}
+							}
+
+							&:nth-last-child(1) {
+								.van-collapse-item {
+									border: unset;
+								}
+							}
+						}
+					}
+
+					.van-cell {
+						padding: 16rpx 20rpx;
+
+						&::after {
+							border-bottom: unset;
+						}
+					}
+				}
+			}
+
+			.van-hairline--top-bottom {
+				&::after {
+					border: unset;
+				}
+			}
+		}
+
+		.select-search-btn {
+			padding: 20rpx 25rpx;
+			border: 1rpx solid $textActionColor;
+			background-color: $textActionColor;
+			font-size: $fontSize2;
+			//width: 100%;
+			color: #FFFFFF;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			border-radius: 10rpx;
+			grid-gap: 10rpx;
+			font-weight: bold;
+			line-height: 1;
+			width: 204rpx;
+			&::before {
+				content: '\e86f';
+				font-size: $fontSize3;
+				font-family: iconfont;
+				font-weight: bold;
+			}
+		}
+	}
 }

+ 1 - 0
store/getters.js

@@ -1,5 +1,6 @@
 const getters = {
   token: state => state.user.token,
+  page: state => state.app.page,
   avatar: state => state.user.avatar || 'https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0225/62189585b166b.png',
   user: state => state.user.user,
   baseApi: state => process.env.BASE_API,

+ 67 - 58
store/modules/app.js

@@ -1,65 +1,74 @@
 const app = {
-  state: {
-    loading: true,
-    device: 'desktop',
-    locale: 'zh-cn',
-		adIsShow: true
-  },
-  mutations: {
-		HIDE_AD: (state) => {
-			state.adIsShow = false
-		},
-		GET_AD_STATUS: (state) => {
-			return state.adIsShow
-		},
-    SET_LOCALE: (state, locale) => {
-      state.locale = locale
+    state: {
+        loading: true,
+        page: ['home'],
+        device: 'desktop',
+        locale: 'zh-cn',
+        adIsShow: true
     },
-    HIDE_LOADING: (state) => {
-      state.loading = false
+    mutations: {
+        SET_PAGE: (state, value) => {
+            state.page.push(value)
+        },
+        DELETE_PAGE: (state) => {
+            if (state.page.length > 0) {
+                state.page.splice(state.page.length-1,1)
+            }
+        },
+        HIDE_AD: (state) => {
+            state.adIsShow = false
+        },
+        GET_AD_STATUS: (state) => {
+            return state.adIsShow
+        },
+        SET_LOCALE: (state, locale) => {
+            state.locale = locale
+        },
+        HIDE_LOADING: (state) => {
+            state.loading = false
+        },
+        GET_DATA: (state, name) => {
+            const item = JSON.parse(JSON.stringify(name))
+            if (state[item]) {
+                return JSON.parse(JSON.stringify(state[item]))
+            }
+        },
+        SET_DATA: (state, res) => {
+            const item = JSON.parse(JSON.stringify(res))
+            if (item.name && !state[item.name]) {
+                state[item.name] = ''
+            }
+            state[item.name] = JSON.parse(JSON.stringify(item.value))
+        },
+        DELETE_DATA: (state, res) => {
+            if (res.name && state[res.name]) {
+                delete state[res.name]
+            }
+        }
     },
-    GET_DATA: (state, name) => {
-      const item = JSON.parse(JSON.stringify(name))
-      if (state[item]) {
-        return JSON.parse(JSON.stringify(state[item]))
-      }
-    },
-    SET_DATA: (state, res) => {
-      const item = JSON.parse(JSON.stringify(res))
-      if (item.name && !state[item.name]) {
-        state[item.name] = ''
-      }
-      state[item.name] = JSON.parse(JSON.stringify(item.value))
-    },
-    DELETE_DATA: (state, res) => {
-      if (res.name && state[res.name]) {
-        delete state[res.name]
-      }
+    actions: {
+        showLoading: ({commit}) => {
+            commit('SHOW_LOADING')
+        },
+        hideLoading: ({commit}) => {
+            commit('HIDE_LOADING')
+        },
+        getData: ({commit}, data) => {
+            commit('GET_DATA', data)
+        },
+        setData: ({commit}, data) => {
+            commit('SET_DATA', data)
+        },
+        deleteData: ({commit}, data) => {
+            commit('DELETE_DATA', data)
+        },
+        getAdStatus: ({commit}) => {
+            commit('GET_AD_STATUS')
+        },
+        hideAd: ({commit}) => {
+            commit('HIDE_AD')
+        }
     }
-  },
-  actions: {
-    showLoading: ({ commit }) => {
-      commit('SHOW_LOADING')
-    },
-    hideLoading: ({ commit }) => {
-      commit('HIDE_LOADING')
-    },
-    getData: ({ commit }, data) => {
-      commit('GET_DATA', data)
-    },
-    setData: ({ commit }, data) => {
-      commit('SET_DATA', data)
-    },
-    deleteData: ({ commit }, data) => {
-      commit('DELETE_DATA', data)
-    },
-		getAdStatus: ({commit}) => {
-			commit('GET_AD_STATUS')
-		},
-		hideAd: ({commit}) => {
-			commit('HIDE_AD')
-		}
-  }
 }
 
 export default app

+ 1 - 1
uni.scss

@@ -16,7 +16,7 @@ $fontSize3: 24rpx;
 $fontSize4: 28rpx;
 $fontSize5: 32rpx;
 $fontSize6: 36rpx;*/
-
+ $navBarHeight: 190rpx;
  $fontSize0: 22rpx;
  $fontSize1: 24rpx;
  $fontSize2: 26rpx;