Files
tuniao-ui/vipPage/home/panoramic/panoramic.vue
T
2026-03-19 10:47:37 +08:00

1447 lines
48 KiB
Vue

<template>
<view class="template-panoramic tn-safe-area-inset-bottom">
<!-- 顶部自定义导航 -->
<!-- <tn-nav-bar fixed alpha customBack>
<view slot="back" class='tn-custom-nav-bar__back'
@click="goBack">
<text class='icon tn-icon-left'></text>
<text class='icon tn-icon-home-capsule-fill'></text>
</view>
</tn-nav-bar> -->
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed :isBack="false" :bottomShadow="false" :backgroundColor="navBarBackgroundColor">
<view id="navbar" class="custom-nav tn-flex tn-flex-col-center tn-flex-row-left">
<!-- 图标logo -->
<view class="custom-nav__back">
<view class="logo-pic tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/logo/logo2.png')">
<view class="logo-image">
</view>
</view>
<!-- <view class="tn-icon-left"></view> -->
</view>
<!-- 搜索框 -->
<view class="custom-nav__search tn-flex tn-flex-col-center tn-flex-row-center" :style="[navBarStyle]">
<view class="custom-nav__search__box tn-flex tn-flex-col-center tn-flex-row-left" style="background-color: rgba(230,230,230,0.3);">
<view class="custom-nav__search__icon tn-icon-search"></view>
<view class="custom-nav__search__text tn-padding-left-xs">搜索 芊云全景</view>
</view>
</view>
</view>
</tn-nav-bar>
<swiper class="card-swiper" :circular="true"
:autoplay="true" duration="500" interval="28000" @change="cardSwiper">
<swiper-item v-for="(item,index) in swiperList" :key="index" :class="cardCur==index?'cur':''">
<view class="swiper-item image-banner">
<image :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
</view>
</swiper-item>
</swiper>
<view class="indication">
<block v-for="(item,index) in swiperList" :key="index">
<view class="spot" :class="cardCur==index?'active':''"></view>
</block>
</view>
<!-- 方式15 start-->
<view class="tn-flex tn-margin-xs tn-padding-top-sm tn-color-white icon-function" id="page_tips">
<view class="tn-flex-1 tn-padding-sm tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon15__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-rocket"></view>
</view>
<view class="tn-text-center">
<text class="tn-text-ellipsis">约拍</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon15__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur ">
<view class="tn-icon-honor"></view>
</view>
<view class="tn-text-center">
<text class="tn-text-ellipsis">创作</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon15__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-moon"></view>
</view>
<view class="tn-text-center">
<text class="tn-text-ellipsis">云币</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-padding-sm tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon15__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur">
<view class="tn-icon-identity"></view>
</view>
<view class="tn-text-center">
<text class="tn-text-ellipsis">认证</text>
</view>
</view>
</view>
</view>
<!-- 方式15 end-->
<!-- 更多信息-->
<view class="health-shadow tn-margin tn-color-black tn-bg-white" style="position: relative;z-index: 1;padding: 20rpx 6rpx;">
<!-- 方式9 start-->
<view class="tn-flex">
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-orange tn-color-white">
<view class="tn-icon-camera"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">拍摄教程</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-red tn-color-white">
<view class="tn-icon-chemistry"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">功能实验</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-cyan tn-color-white">
<view class="tn-icon-vip"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">会员权益</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-blue tn-color-white">
<view class="tn-icon-like-lack"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">萌新求助</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-purple tn-color-white">
<view class="tn-icon-message"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">问题反馈</text>
</view>
</view>
</view>
</view>
<!-- 方式9 end-->
<view class="tn-flex tn-padding-top-sm">
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-blue tn-color-white">
<view class="tn-icon-cube"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">航拍中国</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-orange tn-color-white">
<view class="tn-icon-copy"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">全景看房</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-red tn-color-white">
<view class="tn-icon-fire"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">全景旅游</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-purple tn-color-white">
<view class="tn-icon-star"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">全景游戏</text>
</view>
</view>
</view>
<view class="tn-flex-1 tn-margin-xs tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view class="icon9__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur tn-bg-cyan tn-color-white">
<view class="tn-icon-menu-circle"></view>
</view>
<view class="tn-color-black tn-text-sm tn-text-center">
<text class="tn-text-ellipsis">更多功能</text>
</view>
</view>
</view>
</view>
<!-- 方式9 end-->
</view>
<!-- banner start-->
<view class="tn-flex tn-flex-wrap tn-padding-xs" style="margin-top: -30rpx;">
<view class="" style="width: 100%;">
<view class="image-piccapsule tn-shadow-blur" style="background-image:url('https://resource.tuniaokj.com/images/capsule-banner/banner-tnui.png');">
<view class="image-capsule">
</view>
</view>
</view>
</view>
<!-- banner end-->
<!-- <view class="tn-flex tn-flex-row-between">
<view class="justify-content-item tn-margin tn-text-bold tn-text-xxl">
推荐博主
</view>
<view class="justify-content-item tn-margin tn-text-lg tn-color-gray--disabled">
<text class="tn-padding-xs">全部</text>
<text class="tn-icon-topics"></text>
</view>
</view> -->
<view class="">
<view class="tn-flex tn-flex-row-between">
<view class="justify-content-item tn-margin tn-text-bold tn-text-xl">
热门项目
</view>
<view class="justify-content-item tn-margin tn-text-lg tn-color-gray--disabled">
<text class="tn-padding-xs">全部</text>
<text class="tn-icon-topics"></text>
</view>
</view>
<view class="tn-flex tn-margin-left tn-margin-right tn-margin-top-sm">
<view class="tn-flex-2">
<view class="image-pic tn-margin-right" style="background-image:url('https://resource.tuniaokj.com/images/shop/card.jpg')">
<view class="image-tuniao1">
</view>
</view>
</view>
<view class="tn-flex-1">
<view class="image-pic" style="background-image:url('https://resource.tuniaokj.com/images/shop/phonecase1.jpg')">
<view class="image-tuniao2">
</view>
</view>
<view class="image-pic tn-margin-top" style="background-image:url('https://resource.tuniaokj.com/images/shop/banner1.jpg')">
<view class="image-tuniao2">
</view>
</view>
</view>
</view>
<view class="tn-flex tn-flex-row-between tn-margin-top">
<view class="justify-content-item tn-margin tn-text-bold tn-text-xl">
业务范围
</view>
<!-- <view class="justify-content-item tn-margin tn-text-xxl tn-color-gray--disabled">
<text class="tn-padding-xs">全部</text>
<text class="tn-icon-topics"></text>
</view> -->
</view>
<view class="tn-info__container tn-flex tn-flex-wrap tn-flex-col-center tn-flex-row-between tn-margin-left tn-margin-right">
<block v-for="(item, index) in tuniaoData" :key="index">
<view class="tn-info__item tn-flex tn-flex-direction-row tn-flex-col-center tn-flex-row-between tn-color-white" :class="[`tn-bg-${item.color}`]">
<view class="tn-info__item__left tn-flex tn-flex-direction-row tn-flex-col-center tn-flex-row-left">
<!-- <view class="tn-info__item__left--icon tn-flex tn-flex-col-center tn-flex-row-center" :class="[`tn-bg-${item.color}--light tn-color-${item.color}`]">
<view :class="[`tn-icon-${item.icon}`]"></view>
</view> -->
<view class="tn-info__item__left__content">
<view class="tn-info__item__left__content--title tn-text-xxl">{{ item.title }}</view>
<view class="tn-info__item__left__content--data tn-padding-top-xs">
{{ item.value }}
<text class="tn-icon-right tn-padding-left-xs"></text>
</view>
</view>
</view>
<view class="tn-info__item__right">
<view class="tn-info__item__right--icon">
<view :class="[`tn-icon-${item.icon}`]"></view>
</view>
</view>
</view>
</block>
</view>
</view>
<view class="tn-margin-top-sm">
<tn-sticky :offsetTop="0" :customNavHeight="vuex_custom_bar_height">
<tn-tabs :list="fixedList" :current="current" :isScroll="false" activeColor="#000" bold="true" :fontSize="32" :badgeOffset="[20, 50]" @change="tabChange" backgroundColor="#FFFFFF" :height="110"></tn-tabs>
</tn-sticky>
</view>
<view class="" style="padding: 30rpx 20rpx;">
<tn-waterfall ref="waterfall" v-model="list" @finish="handleWaterFallFinish">
<template v-slot:left="{ leftList }">
<view v-for="(item, index) in leftList" :key="item.id" class="product__item">
<view class="item__image">
<tn-lazy-load :threshold="-450" height="100%" :image="item.mainImage" :index="item.id" imgMode="widthFix"></tn-lazy-load>
</view>
<view class="item__data">
<view class="item__title-container">
<view v-if="item.newProduct" class="item__store-type tn-cool-bg-color-8">达人</view>
<view v-else-if="item.storeType === 1" class="item__store-type tn-cool-bg-color-1">SVIP</view>
<text class="item__title">{{ item.title }}</text>
</view>
<view v-if="item.tags && item.tags.length > 0" class="item__tags-container">
<view v-for="(tagItem, tagIndex) in item.tags" :key="tagIndex" class="item__tag">{{ tagItem }}</view>
</view>
<!-- <view class="item__price-container">
<text class="item__price--unit"></text>
<text class="item__price--integer">{{ item.priceInteger }}</text>
<text class="item__price--dot">.</text>
<text class="item__price--decimal">{{ item.priceDecimal }}</text>
</view> -->
<view class="tn-flex tn-padding-right-sm tn-padding-top-sm tn-padding-bottom-xs">
<view class="justify-content-item tn-flex">
<view style="margin-right: 10rpx;">
<tn-avatar-group :lists="item.viewUser.latestUserAvatar" size="sm"></tn-avatar-group>
</view>
<text class="tn-color-gray">{{ item.viewUser.viewUserCount }} 人在看</text>
</view>
</view>
</view>
</view>
</template>
<template v-slot:right="{ rightList }">
<view v-for="(item, index) in rightList" :key="item.id" class="product__item">
<view class="item__image">
<tn-lazy-load :threshold="-450" height="100%" :image="item.mainImage" :index="item.id" imgMode="widthFix"></tn-lazy-load>
</view>
<view class="item__data">
<view class="item__title-container">
<view v-if="item.storeType === 1" class="item__store-type tn-cool-bg-color-5">VIP</view>
<text class="item__title">{{ item.title }}</text>
</view>
<view v-if="item.tags && item.tags.length > 0" class="item__tags-container">
<view v-for="(tagItem, tagIndex) in item.tags" :key="tagIndex" class="item__tag">{{ tagItem }}</view>
</view>
<!-- <view class="item__price-container">
<text class="item__price--unit"></text>
<text class="item__price--integer">{{ item.priceInteger }}</text>
<text class="item__price--dot">.</text>
<text class="item__price--decimal">{{ item.priceDecimal }}</text>
</view> -->
<view class="tn-flex tn-padding-right-sm tn-padding-top-sm tn-padding-bottom-xs">
<view class="justify-content-item tn-flex">
<view style="">
<tn-avatar-group :lists="item.viewUser.latestUserAvatar" size="sm"></tn-avatar-group>
</view>
<text class="tn-color-gray">{{ item.viewUser.viewUserCount }} 人在看</text>
</view>
</view>
</view>
</view>
</template>
</tn-waterfall>
</view>
<tn-load-more :status="loadStatus"></tn-load-more>
<!-- 底部tabbar start-->
<view class="tabbar footerfixed">
<view class="action" @click="">
<view class="bar-icon">
<!-- <view class="tn-icon-home-smile tn-color-gray--dark">
</view> -->
<image class="" src='https://resource.tuniaokj.com/images/tabbar/home_tnnew.png'></image>
<!-- <image class="" src='https://resource.tuniaokj.com/images/bless/bless-home.png'></image> -->
</view>
<view class="tn-color-gray">首页</view>
</view>
<view class="action" @click="">
<view class="bar-icon">
<!-- <view class="tn-icon-discover tn-color-gray--dark">
</view> -->
<image class="" src='https://resource.tuniaokj.com/images/tabbar/information_tn.png'></image>
<!-- <image class="" src='https://resource.tuniaokj.com/images/bless/bless-flower.png'></image> -->
</view>
<view class="tn-color-gray">圈子</view>
</view>
<!-- <view class="action bar-center">
<view class="bar-circle tn-shadow-blur">
<view class="tn-icon-camera-fill tn-color-white">
</view>
</view>
<view class="tn-color-gray">发布</view>
</view> -->
<view class="action bar-center" @click="">
<view class="nav-index-button">
<view class="nav-index-button__content">
<view class="nav-index-button__content--icon tn-flex tn-flex-row-center tn-flex-col-center">
<!-- <view class="tn-icon-logo-tuniao"></view> -->
<view class="bar-circle">
<!-- <image class="" src='https://resource.tuniaokj.com/images/login/1/login_top3.png'></image> -->
<image class="" src='https://resource.tuniaokj.com/images/bless/bless-tiger.png'></image>
</view>
</view>
</view>
<view class="nav-index-button__meteor">
<view class="nav-index-button__meteor__wrapper">
<view v-for="(item,index) in 6" :key="index" class="nav-index-button__meteor__item" :style="{transform: `rotateX(${-60 + (30 * index)}deg) rotateZ(${-60 + (30 * index)}deg)`}">
<view class="nav-index-button__meteor__item--pic"></view>
</view>
</view>
</view>
</view>
<!-- <view class="tn-color-gray">发布</view> -->
</view>
<view class="action" @click="">
<view class="bar-icon">
<!-- <view class="tn-icon-image-text tn-color-gray--dark">
</view> -->
<image class="" src='https://resource.tuniaokj.com/images/tabbar/case_tn.png'></image>
<!-- <image class="" src='https://resource.tuniaokj.com/images/bless/bless-china.png'></image> -->
</view>
<view class="tn-color-gray">优选</view>
</view>
<view class="action" @click="">
<view class="bar-icon">
<!-- <view class="tn-icon-my tn-color-gray--dark">
</view> -->
<image class="" src='https://resource.tuniaokj.com/images/tabbar/my_tn.png'></image>
<!-- <image class="" src='https://resource.tuniaokj.com/images/bless/bless-money.png'></image> -->
</view>
<view class="tn-color-gray">我的</view>
</view>
</view>
<view class="tn-padding-xl"></view>
<!-- 回到首页悬浮按钮-->
<nav-index-button></nav-index-button>
</view>
</template>
<script>
import template_page_mixin from '@/libs/mixin/template_page_mixin.js'
import NavIndexButton from '@/libs/components/nav-index-button.vue'
export default {
name: 'TemplatePanoramic',
mixins: [template_page_mixin],
components: { NavIndexButton },
data(){
return {
cardCur: 0,
swiperList: [{
id: 0,
type: 'image',
title: '免费开源',
name: '商业合作请联系作者',
text: '微信:tnkewo',
url: 'https://resource.tuniaokj.com/images/swiper/adno3.jpg',
}, {
id: 1,
type: 'image',
title: '图鸟南南',
name: '欢迎加入东东们',
text: '如果你也有不错的作品',
url: 'https://resource.tuniaokj.com/images/swiper/adno4.jpg',
}, {
id: 2,
type: 'image',
title: '图鸟西西',
name: '一起玩转scss',
text: '用最少的代码做最骚的效果',
url: 'https://resource.tuniaokj.com/images/swiper/adno5.jpg',
}, {
id: 3,
type: 'image',
title: '图鸟北北',
name: '微信号 tnkewo',
text: '商业合作请联系作者',
url: 'https://resource.tuniaokj.com/images/swiper/adno2.jpg',
}],
current: 0,
fixedList: [
{name: '推荐'},
{name: '附近'},
{name: '最新'},
{name: '精品'},
{name: '人气', count: ''},
],
tuniaoData: [
{
title: 'UI设计',
icon: 'image-text-fill',
color: 'red',
value: '前往咨询'
},
{
title: '小程序',
icon: 'data-fill',
color: 'orange',
value: '前往咨询'
},
{
title: '网站开发',
icon: 'statistics-fill',
color: 'purple',
value: '前往咨询'
},
{
title: '其他业务',
icon: 'bankcard-fill',
color: 'blue',
value: '前往咨询'
}
],
navBarRectInfo: {},
navBarChangebaseLineHeight: 0,
navBarStyle: {
color:'#FFFFFF',
opacity: 1,
display: 'flex'
},
navBarBackgroundColor: 'rgba(255, 255, 255, 0)',
activeBgAnimation: {},
/* 瀑布流*/
loadStatus: 'loadmore',
list: [],
data: [
{
title: '广大军训快闪',
mainImage: 'https://resource.tuniaokj.com/images/shop/computer1.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: true, // 是否为新品
tags: ['军训汇演','青春校园'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 338
},
},
{
title: '万科神奇动物主场',
mainImage: 'https://resource.tuniaokj.com/images/shop/computer2.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: ['空间设计'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 289
},
},
{
title: '北海世博园灯笼走廊',
mainImage: 'https://resource.tuniaokj.com/images/shop/phonecase2.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: true, // 是否为新品
tags: [],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 381
},
},
{
title: '浦江航拍夜上海',
mainImage: 'https://resource.tuniaokj.com/images/shop/phonecase1.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: true, // 是否为新品
tags: [],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 526
},
},
{
title: '2021建档百年外滩灯光秀',
mainImage: 'https://resource.tuniaokj.com/images/shop/watch1.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: [],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 372
},
},
{
title: '广州纳达堡三室两厅',
mainImage: 'https://resource.tuniaokj.com/images/shop/card.jpg',
storeType: 2, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: ['VR看房'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 694
},
},
{
title: '冰岛极光航拍',
mainImage: 'https://resource.tuniaokj.com/images/shop/prototype1.jpg',
storeType: 2, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: ['看世界'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 508
},
},
{
title: '泰山之巅',
mainImage: 'https://resource.tuniaokj.com/images/shop/bag1.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: ['航拍中国'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 923
},
},
{
title: '广州分手塔',
mainImage: 'https://resource.tuniaokj.com/images/shop/cup2.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: ['热门景点'],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 989
},
},
{
title: '珠海澳门交界',
mainImage: 'https://resource.tuniaokj.com/images/shop/pillow.jpg',
storeType: 1, // 1 自营 2 第三方店铺
newProduct: false, // 是否为新品
tags: [],
viewUser: {
latestUserAvatar: [
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_1.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_2.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_3.jpeg'},
{src: 'https://resource.tuniaokj.com/images/blogger/avatar_4.jpeg'},
],
viewUserCount: 129
},
}
]
}
},
/* 瀑布流*/
onLoad() {
this.getRandomData()
},
onReachBottom() {
this.getRandomData()
},
/* 顶部导航*/
onReady() {
this.$nextTick(() => {
this.initNavBarRectInfo()
})
},
onPageScroll() {
this.updateNavBarRectInfo()
},
methods: {
// cardSwiper
cardSwiper(e) {
this.cardCur = e.detail.current
},
// resume
resume(e) {
this.cardCur2 = e.detail.current
},
// 初始化导航栏信息
async initNavBarRectInfo() {
const navBarRectInfo = await this._tGetRect('#navbar')
const pageTipsRectInfo = await this._tGetRect('#page_tips')
// console.log(navBarRectInfo, pageTipsRectInfo, navBarRectInfo?.top, pageTipsRectInfo?.top);
if (!navBarRectInfo.hasOwnProperty('top') || !pageTipsRectInfo.hasOwnProperty('top')) {
setTimeout(() => {
this.initNavBarRectInfo()
}, 10)
return
}
this.navBarRectInfo = {
top: navBarRectInfo.top
}
this.navBarChangebaseLineHeight = pageTipsRectInfo.top - navBarRectInfo.top
},
// 更新导航栏信息
updateNavBarRectInfo() {
this._tGetRect('#page_tips').then((res) => {
const top = res?.top || 0
if (!top) {
return
}
const differHeight = top - this.navBarRectInfo.top
const opacity = differHeight / this.navBarChangebaseLineHeight
if (opacity < 0) {
// this.navBarStyle.opacity = 1
// this.navBarStyle.display = 'flex'
this.navBarStyle.color = 'rgba(0, 0, 0, ${opacity})'
this.navBarBackgroundColor = `rgba(255, 255, 255, 1)`
} else {
// this.navBarStyle.opacity = 1 - opacity
// this.navBarStyle.display = 'flex'
this.navBarStyle.color = 'rgba(255, 255, 255, 1)'
this.navBarBackgroundColor = `rgba(255, 255, 255, ${1 - opacity})`
}
// console.log(top, differHeight, opacity);
})
},
// 跳转到
navTuniaoUI(e) {
uni.navigateTo({
url: '/pages/index/index'
})
},
// tab选项卡切换
tabChange(index) {
this.current = index
},
/* 瀑布流*/
// 获取随机数据
getRandomData() {
this.loadStatus = 'loading'
for (let i = 0; i < 10; i++) {
let index = this.$tn.number.randomInt(0, this.data.length - 1)
let item = JSON.parse(JSON.stringify(this.data[index]))
let price = this.getPrice(item.price)
item.id = this.$tn.uuid()
item.priceInteger = price[0]
item.priceDecimal = price[1]
this.list.push(item)
}
},
// 瀑布流加载完毕事件
handleWaterFallFinish() {
this.loadStatus = 'loadmore'
},
// 获取价格整数和小数部分
getPrice(price) {
const priceStr = String(price)
if (priceStr.indexOf('.') !== -1) {
return priceStr.split('.')
} else {
return [priceStr, '00']
}
}
}
}
</script>
<style lang="scss" scoped>
@import '@/static/css/templatePage/custom_nav_bar.scss';
.template-panoramic {
// background-color: #FBFBFB;
}
.icon-function {
position: relative;
z-index: 1;
margin: 20rpx 5rpx;
margin-top: -420rpx;
}
/* 轮播视觉差 start */
.card-swiper {
height: 600rpx !important;
}
.card-swiper swiper-item {
width: 750rpx !important;
left: 0rpx;
box-sizing: border-box;
// padding: 0rpx 30rpx 90rpx 30rpx;
overflow: initial;
}
.card-swiper swiper-item .swiper-item {
width: 100%;
display: block;
height: 100%;
transform: scale(1);
transition: all 0.2s ease-in 0s;
overflow: hidden;
}
.card-swiper swiper-item.cur .swiper-item {
transform: none;
transition: all 0.2s ease-in 0s;
}
.image-banner{
display: flex;
align-items: center;
justify-content: center;
}
.image-banner image{
width: 100%;
height: 100%;
}
/* 轮播指示点 start*/
.indication{
z-index: 9999;
width: 100%;
height: 36rpx;
position: absolute;
display:flex;
flex-direction:row;
align-items:center;
justify-content:center;
opacity: 0;
}
.spot{
background-color: #FFFFFF;
opacity: 0.6;
width: 10rpx;
height: 10rpx;
border-radius: 20rpx;
top: -60rpx;
margin: 0 8rpx !important;
position: relative;
}
.spot.active{
opacity: 1;
width: 30rpx;
background-color: #FFFFFF;
}
/* 图标容器15 start */
.icon15 {
&__item {
width: 30%;
background-color: #FFFFFF;
border-radius: 10rpx;
padding: 30rpx;
margin: 20rpx 10rpx;
transform: scale(1);
transition: transform 0.3s linear;
transform-origin: center center;
&--icon {
width: 100rpx;
height: 100rpx;
font-size: 60rpx;
// border-radius: 50%;
margin-bottom: 0rpx;
position: relative;
z-index: 1;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
}
}
}
}
/* 图标容器9 start */
.icon9 {
&__item {
width: 30%;
background-color: #FFFFFF;
border-radius: 10rpx;
transform: scale(1);
transition: transform 0.3s linear;
transform-origin: center center;
&--icon {
width: 80rpx;
height: 80rpx;
font-size: 50rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/icon_bg6.png);
}
}
}
}
/* 阴影 start*/
.health-shadow {
border-radius: 15rpx;
box-shadow: 0rpx 0rpx 50rpx 0rpx rgba(0, 0, 0, 0.07);
}
/* 自定义导航栏内容 start */
.custom-nav {
height: 100%;
&__back {
margin: auto 5rpx;
font-size: 40rpx;
margin-right: 10rpx;
margin-left: 30rpx;
flex-basis: 5%;
}
&__search {
flex-basis: 60%;
width: 100%;
height: 100%;
&__box {
width: 100%;
height: 70%;
padding: 10rpx 0;
margin: 0 30rpx;
border-radius: 60rpx 60rpx 0 60rpx;
font-size: 24rpx;
}
&__icon {
padding-right: 10rpx;
margin-left: 20rpx;
font-size: 30rpx;
}
&__text {
// color: #AAAAAA;
}
}
}
.logo-image{
width: 65rpx;
height: 65rpx;
position: relative;
}
.logo-pic{
background-size: cover;
background-repeat:no-repeat;
// background-attachment:fixed;
background-position:top;
border-radius: 50%;
}
/* 自定义导航栏内容 end */
/* 热门图片 start*/
.image-tuniao1{
padding: 164rpx 0rpx;
font-size: 40rpx;
font-weight: 300;
position: relative;
}
.image-tuniao2{
padding: 75rpx 0rpx;
font-size: 40rpx;
font-weight: 300;
position: relative;
}
.image-tuniao3{
padding: 90rpx 0rpx;
font-size: 40rpx;
font-weight: 300;
position: relative;
}
.image-pic{
background-size: cover;
background-repeat:no-repeat;
// background-attachment:fixed;
background-position:top;
border-radius: 10rpx;
}
/* 胶囊banner*/
.image-capsule{
padding: 100rpx 0rpx;
font-size: 40rpx;
font-weight: 300;
position: relative;
}
.image-piccapsule{
background-size: cover;
background-repeat:no-repeat;
// background-attachment:fixed;
background-position:top;
border-radius: 20rpx 20rpx 0 0;
}
/* 业务展示 start */
.tn-info {
&__container {
margin-top: 10rpx;
margin-bottom: 50rpx;
}
&__item {
width: 48%;
margin: 15rpx 0rpx;
padding: 40rpx 30rpx;
border-radius: 15rpx;
position: relative;
z-index: 1;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/2.png);
}
&__left {
&--icon {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
font-size: 40rpx;
margin-right: 20rpx;
position: relative;
z-index: 1;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/icon_bg5.png);
}
}
&__content {
font-size: 25rpx;
&--data {
color: rgba(255,255,255,0.5);
margin-top: 5rpx;
// font-weight: bold;
}
}
}
&__right {
&--icon {
position: absolute;
right: 0rpx;
top: 50rpx;
font-size: 100rpx;
width: 108rpx;
height: 108rpx;
text-align: center;
line-height: 60rpx;
opacity: 0.15;
}
}
}
}
/* 业务展示 end */
.product__item {
background-color: #FFFFFF;
border-radius: 10rpx;
overflow: hidden;
margin: 0 10rpx;
margin-bottom: 20rpx;
box-shadow: 0rpx 0rpx 30rpx 0rpx rgba(0, 0, 0, 0.07);
.item {
/* 图片 start */
&__image {
width: 100%;
height: auto;
background-color: #FFFFFF;
}
/* 图片 end */
/* 内容 start */
&__data {
padding: 8rpx 14rpx;
}
/* 标题 start */
&__title-container {
text-align: justify;
line-height: 38rpx;
vertical-align: middle;
}
&__store-type {
height: 28rpx;
font-size: 20rpx;
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 4rpx;
border-radius: 6rpx;
white-space: nowrap;
text-align: center;
top: -2rpx;
margin-right: 6rpx;
}
&__title {
}
/* 标题 end */
/* 标签 start */
&__tags-container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: flex-start;
}
&__tag {
margin: 10rpx;
color: #E83A30;
border: 2rpx solid #E83A30;
padding: 0 6rpx;
border-radius: 10rpx;
font-size: 20rpx;
&:first-child {
margin-left: 0rpx !important;
}
}
/* 标签 end */
/* 价格 start */
&__price-container {
font-size: 24rpx;
color: #E83A30;
font-weight: bold;
}
&__price {
&--unit {
}
&--integer {
font-size: 38rpx;
}
&--decimal {
}
}
/* 价格 end */
/* 内容 end */
}
}
/* 底部tabbar start*/
.footerfixed{
position: fixed;
width: 100%;
bottom: 0;
z-index: 999;
background-color: #FFFFFF;
box-shadow: 0rpx 0rpx 30rpx 0rpx rgba(0, 0, 0, 0.07);
}
.tabbar {
display: flex;
align-items: center;
min-height: 110rpx;
justify-content: space-between;
padding: 0;
height: calc(110rpx + env(safe-area-inset-bottom) / 2);
padding-bottom: calc(env(safe-area-inset-bottom) / 2);
}
.tabbar .action {
font-size: 22rpx;
position: relative;
flex: 1;
text-align: center;
padding: 0;
display: block;
height: auto;
line-height: 1;
margin: 0;
overflow: initial;
}
.bar-center{
animation: suspension 3s ease-in-out infinite;
}
@keyframes suspension {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.8rem);
}
}
.tabbar .action .bar-icon {
width: 100rpx;
position: relative;
display: block;
height: auto;
margin: 0 auto 10rpx;
text-align: center;
font-size: 42rpx;
// line-height: 50rpx;
}
.tabbar .action .bar-icon image {
width: 50rpx;
height: 50rpx;
display: inline-block;
}
.tabbar .action .bar-circle {
position: relative;
display: block;
margin: 0rpx auto 0rpx;
text-align: center;
font-size: 52rpx;
line-height: 90rpx;
// background-color: #01BEFF;
width: 100rpx !important;
height: 100rpx !important;
overflow: hidden;
// border-radius: 50%;
// box-shadow: 0px 10px 30px rgba(70,23,129, 0.12),
// 0px -8px 40px rgba(255, 255, 255, 1),
// inset 0px -10px 10px rgba(70,23,129, 0.05),
// inset 0px 10px 20px rgba(255, 255, 255, 1);
// box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(1, 190, 255, 0.5);
}
.tabbar .action .bar-circle image {
width: 100rpx;
height: 100rpx;
display: inline-block;
margin: 0rpx auto 0rpx;
}
/* 流星+悬浮 */
.nav-index-button {
animation: suspension 3s ease-in-out infinite;
z-index: 999999;
&__content {
position: absolute;
width: 100rpx;
height: 100rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
&--icon {
width: 100rpx;
height: 100rpx;
font-size: 60rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
transform: scale(0.85);
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
// background-image: url(https://resource.tuniaokj.com/images/cool_bg_image/icon_bg6.png);
}
}
}
&__meteor {
position: absolute;
top: 50%;
left: 50%;
width: 100rpx;
height: 100rpx;
transform-style: preserve-3d;
transform: translate(-50%, -50%) rotateY(75deg) rotateZ(10deg);
&__wrapper {
width: 100rpx;
height: 100rpx;
transform-style: preserve-3d;
animation: spin 20s linear infinite;
}
&__item {
position: absolute;
width: 100rpx;
height: 100rpx;
border-radius: 1000rpx;
left: 0;
top: 0;
&--pic {
display: block;
width: 100%;
height: 100%;
background: url(https://resource.tuniaokj.com/images/cool_bg_image/arc1.png) no-repeat center center;
background-size: 100% 100%;
animation: arc 4s linear infinite;
}
}
}
}
@keyframes suspension {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.6rem);
}
}
@keyframes spin {
0% {
transform: rotateX(0deg);
}
100% {
transform: rotateX(-360deg);
}
}
@keyframes arc {
to {
transform: rotate(360deg);
}
}
</style>