|
|
@@ -9,6 +9,7 @@
|
|
|
"van-sidebar": "../native/vant/sidebar/index",
|
|
|
"van-sidebar-item": "../native/vant/sidebar-item/index"
|
|
|
},
|
|
|
+'disableScroll': true
|
|
|
}
|
|
|
</config>
|
|
|
<template>
|
|
|
@@ -16,44 +17,63 @@
|
|
|
<div style="height:71px">
|
|
|
<search-bar v-model="searchKey" :ratio="ratio" @search="submitSearch"> </search-bar>
|
|
|
</div>
|
|
|
- <div class="vendor" id="vendor">
|
|
|
- <van-image :radius="4" :src="vendorInfo.logo" fit="cover" :width="60" :height="60" />
|
|
|
- <div class="vendor-info">
|
|
|
- <div class="text1">{{ vendorInfo.chCompanyName }}</div>
|
|
|
- <div class="text2">{{ vendorInfo.enCompanyName }}</div>
|
|
|
+ <div class="fixed-top"></div>
|
|
|
+ <scroll-view
|
|
|
+ id="scroller"
|
|
|
+ @scroll="onScroll"
|
|
|
+ style="height:calc(100vh - 71px)"
|
|
|
+ :scroll-y="true"
|
|
|
+ class="scrollView"
|
|
|
+ efresher-background="#0F264D"
|
|
|
+ >
|
|
|
+ <div class="vendor" id="vendor">
|
|
|
+ <van-image :radius="4" :src="vendorInfo.logo" fit="cover" :width="60" :height="60" />
|
|
|
+ <div class="vendor-info">
|
|
|
+ <div class="text1">{{ vendorInfo.chCompanyName }}</div>
|
|
|
+ <div class="text2">{{ vendorInfo.enCompanyName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="collect" @click="collection">
|
|
|
+ <van-icon
|
|
|
+ :custom-class="animate ? 'my-icon iconAnimate' : 'my-icon'"
|
|
|
+ :name="isCollection ? 'icon-aixin' : 'icon-icon_collect'"
|
|
|
+ :size="32"
|
|
|
+ :color="isCollection ? $colors.warn : '#BCC1CC'"
|
|
|
+ class-prefix="iconfont"
|
|
|
+ />
|
|
|
+ <div class="text">{{ isCollection ? '已关注' : '关注' }}</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="collect" @click="collection">
|
|
|
- <van-icon
|
|
|
- :custom-class="animate ? 'my-icon iconAnimate' : 'my-icon'"
|
|
|
- :name="isCollection ? 'icon-aixin' : 'icon-icon_collect'"
|
|
|
- :size="32"
|
|
|
- :color="isCollection ? $colors.warn : '#BCC1CC'"
|
|
|
- class-prefix="iconfont"
|
|
|
- />
|
|
|
- <div class="text">{{ isCollection ? '已关注' : '关注' }}</div>
|
|
|
+ <div class="main" id="main">
|
|
|
+ <van-sticky :scroll-top="scrollTop" :offset-top="offsetTop">
|
|
|
+ <van-tabs :sticky="false" :line-height="0" @change="active = $event.detail.index">
|
|
|
+ <van-tab title="关于展商"> </van-tab>
|
|
|
+ <van-tab title="产品"> </van-tab>
|
|
|
+ <!-- <van-tab title="新闻资讯"> </van-tab> -->
|
|
|
+ </van-tabs>
|
|
|
+ </van-sticky>
|
|
|
+ <about v-if="active === 0" :vendorInfo="vendorInfo" :showConnect="showConnect"></about>
|
|
|
+ <product v-else-if="active === 1" :vendorInfo="vendorInfo" :fixedTop="searchTop"></product>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="main" id="main">
|
|
|
- <van-tabs :z-index="200" :line-height="0" sticky :offset-top="71" @change="active = $event.detail.index">
|
|
|
- <van-tab title="关于展商">
|
|
|
- <about :vendorInfo="vendorInfo" :showConnect="showConnect"></about>
|
|
|
- </van-tab>
|
|
|
- <van-tab title="产品">
|
|
|
- <product :vendorInfo="vendorInfo" :fixedTop="searchTop"></product>
|
|
|
- </van-tab>
|
|
|
- <van-tab title="新闻资讯"> </van-tab>
|
|
|
- </van-tabs>
|
|
|
- </div>
|
|
|
+ </scroll-view>
|
|
|
+ <fixed-button v-if="showConnect && active === 0">
|
|
|
+ <van-button
|
|
|
+ :color="$colors.warn"
|
|
|
+ block
|
|
|
+ @click="navigateTo('/pagesVendor/Connect?vendorId=' + vendorInfo.id)"
|
|
|
+ >咨询展商</van-button
|
|
|
+ >
|
|
|
+ </fixed-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import SearchBar from '../components/bar/SearchBarWithValue.vue';
|
|
|
+import FixedButton from '../components/FixedButton.vue';
|
|
|
import collection from '../mixins/collection';
|
|
|
import About from './About.vue';
|
|
|
import Product from './Product.vue';
|
|
|
|
|
|
export default {
|
|
|
- components: { SearchBar, About, Product },
|
|
|
+ components: { SearchBar, About, Product, FixedButton },
|
|
|
data() {
|
|
|
return {
|
|
|
ratio: 1,
|
|
|
@@ -64,14 +84,38 @@ export default {
|
|
|
vendorInfo: {},
|
|
|
active: 0,
|
|
|
searchTop: 0,
|
|
|
- showConnect: false
|
|
|
+ showConnect: false,
|
|
|
+ scrollView: null,
|
|
|
+ main: null,
|
|
|
+ scrollTop: 0,
|
|
|
+ offsetTop: 0
|
|
|
};
|
|
|
},
|
|
|
mixins: [collection],
|
|
|
methods: {
|
|
|
- submitSearch() {},
|
|
|
+ submitSearch(e) {
|
|
|
+ console.log(this.searchKey);
|
|
|
+ this.navigateTo(
|
|
|
+ '/pagesHome/ProductList?vendorId=' + this.vendorInfo.id + '&search=' + this.searchKey,
|
|
|
+ false
|
|
|
+ );
|
|
|
+ },
|
|
|
loginMethods() {
|
|
|
this.cId = this.$mp.options.id;
|
|
|
+ },
|
|
|
+ onScroll(event) {
|
|
|
+ wx.createSelectorQuery()
|
|
|
+ .select('#scroller')
|
|
|
+ .boundingClientRect(res => {
|
|
|
+ this.scrollTop = event.detail.scrollTop;
|
|
|
+ this.offsetTop = res.top;
|
|
|
+ })
|
|
|
+ .exec();
|
|
|
+ if (event.detail.scrollTop < 115) {
|
|
|
+ this.showConnect = false;
|
|
|
+ } else {
|
|
|
+ this.showConnect = true;
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
@@ -116,18 +160,25 @@ export default {
|
|
|
.vendor-info {
|
|
|
flex-grow: 1;
|
|
|
padding: 0 8px;
|
|
|
+ overflow: hidden;
|
|
|
|
|
|
.text1 {
|
|
|
font-size: 15px;
|
|
|
font-weight: bold;
|
|
|
color: #ffffff;
|
|
|
line-height: 24px;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
}
|
|
|
|
|
|
.text2 {
|
|
|
font-size: 12px;
|
|
|
color: #878d99;
|
|
|
line-height: 17px;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -156,5 +207,21 @@ export default {
|
|
|
.main {
|
|
|
--tabs-nav-background-color: @prim;
|
|
|
--tab-text-color: #ffffffaa;
|
|
|
+ background-color: #fff;
|
|
|
+}
|
|
|
+
|
|
|
+.fixed-top {
|
|
|
+ height: 135px;
|
|
|
+ position: fixed;
|
|
|
+ top: 71px;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ background-color: #0f264d;
|
|
|
+ z-index: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.scrollView {
|
|
|
+ z-index: 2;
|
|
|
+ position: relative;
|
|
|
}
|
|
|
</style>
|