7 changed files with 445 additions and 24 deletions
@ -0,0 +1,352 @@ |
|||||||
|
<template> |
||||||
|
<div class="Me"> |
||||||
|
<SlideRowList style="width: 100vw;" v-model:active-index="baseActiveIndex"> |
||||||
|
<SlideItem> |
||||||
|
<div class="scroll" |
||||||
|
ref="scroll" |
||||||
|
@touchstart="touchStart($event)" |
||||||
|
@touchmove="touchMove($event)" |
||||||
|
@touchend="touchEnd($event)"> |
||||||
|
<div ref="desc" class="desc"> |
||||||
|
<div style="height: 380px;"></div> |
||||||
|
</div> |
||||||
|
<div ref="content" class="test " :class="isFixed?'fixed':''" style="margin-bottom: 60px;"> |
||||||
|
<Indicator |
||||||
|
name="videoList" |
||||||
|
:fixed="indicatorFixed" |
||||||
|
tabStyleWidth="25%" |
||||||
|
:tabTexts="['作品','私密','喜欢','收藏']" |
||||||
|
v-model:active-index="contentIndex"> |
||||||
|
</Indicator> |
||||||
|
<SlideRowList |
||||||
|
name="videoList" |
||||||
|
:indicator-fixed="indicatorFixed" |
||||||
|
v-model:active-index="contentIndex"> |
||||||
|
<SlideItem style="overflow: auto;height: 100vh;"> |
||||||
|
<div ref="tab-content1"> |
||||||
|
<Posters :list="25"></Posters> |
||||||
|
<div class="no-more">暂时没有更多了</div> |
||||||
|
</div> |
||||||
|
</SlideItem> |
||||||
|
<SlideItem> |
||||||
|
<div ref="tab-content2"> |
||||||
|
<Posters :list="5"></Posters> |
||||||
|
<div class="no-more">暂时没有更多了</div> |
||||||
|
</div> |
||||||
|
</SlideItem> |
||||||
|
<SlideItem> |
||||||
|
<div ref="tab-content3"> |
||||||
|
<Posters :list="5"></Posters> |
||||||
|
<div class="no-more">暂时没有更多了</div> |
||||||
|
</div> |
||||||
|
</SlideItem> |
||||||
|
<SlideItem> |
||||||
|
<div ref="tab-content3"> |
||||||
|
<Posters :list="5"></Posters> |
||||||
|
<div class="no-more">暂时没有更多了</div> |
||||||
|
</div> |
||||||
|
</SlideItem> |
||||||
|
</SlideRowList> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<Footer v-bind:init-tab="5"/> |
||||||
|
</SlideItem> |
||||||
|
<SlideItem style="min-width: 70vw; overflow:auto;"> |
||||||
|
<transition name="fade"> |
||||||
|
<div class="ul" v-if="!isMoreFunction"> |
||||||
|
<div class="li" @click="$nav('/my-card')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/shopping.png" alt=""> |
||||||
|
<span>我的订单</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/wallet.png" alt=""> |
||||||
|
<span>钱包</span> |
||||||
|
</div> |
||||||
|
<div class="line"></div> |
||||||
|
|
||||||
|
<div class="li" @click="$nav('/me/right-menu/look-history')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/clock.png" alt=""> |
||||||
|
<span>观看历史</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('/my-card')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/qrcode.png" alt=""> |
||||||
|
<span>我的二维码</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/workbench.png" alt=""> |
||||||
|
<span>创作者服务中心</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="line"></div> |
||||||
|
|
||||||
|
<div class="li" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/bytedance-mini-app.png" alt=""> |
||||||
|
<span>小程序</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/gongyi.png" alt=""> |
||||||
|
<span>抖音公益</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('/me/right-menu/minor-protection/index')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/umbrella.png" alt=""> |
||||||
|
<span>未成年保护工具</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/headset.png" alt=""> |
||||||
|
<span>我的客服</span> |
||||||
|
</div> |
||||||
|
<div class="li" @click="$nav('/me/right-menu/setting')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/setting-one.png" alt=""> |
||||||
|
<span>设置</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div v-else class="more-function"> |
||||||
|
<div class="title">生活服务</div> |
||||||
|
<div class="functions"> |
||||||
|
<div class="function"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/quan.png" alt=""> |
||||||
|
<span>卡券</span> |
||||||
|
</div> |
||||||
|
<div class="function"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/sd-card.png" alt=""> |
||||||
|
<span>免流量</span> |
||||||
|
</div> |
||||||
|
<div class="function" @click="$nav('MyCollect')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/alarmmmmmmmmmmmm.png" alt=""> |
||||||
|
<span>视频彩铃</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="title">拓展功能</div> |
||||||
|
<div class="functions"> |
||||||
|
<div class="function" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/sun-one.png" alt=""> |
||||||
|
<span>我的动态</span> |
||||||
|
</div> |
||||||
|
<div class="function"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/download.png" alt=""> |
||||||
|
<span>我的缓存</span> |
||||||
|
</div> |
||||||
|
<div class="function" @click="$nav('MyCard')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/hot.png" alt=""> |
||||||
|
<span>上热门</span> |
||||||
|
</div> |
||||||
|
<div class="function" @click="$nav('MyCollect')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/shop.png" alt=""> |
||||||
|
<span>小店随心推</span> |
||||||
|
</div> |
||||||
|
<div class="function" @click="$nav('MyCollect')"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/yuandi.png" alt=""> |
||||||
|
<span>投教园地</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</transition> |
||||||
|
<div class="button-ctn"> |
||||||
|
<div class="button" v-if="!isMoreFunction" @click="isMoreFunction = true"> |
||||||
|
<img src="../../assets/img/icon/newicon/left_menu/more.png" alt=""> |
||||||
|
<span>更多功能</span> |
||||||
|
</div> |
||||||
|
<div class="button" v-if="isMoreFunction" @click="isMoreFunction = false"> |
||||||
|
<span>返回</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</SlideItem> |
||||||
|
</SlideRowList> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script> |
||||||
|
import Posters from '../../components/Posters' |
||||||
|
import Footer from "../../components/Footer"; |
||||||
|
import Indicator from '../../components/Indicator' |
||||||
|
|
||||||
|
export default { |
||||||
|
name: "Me", |
||||||
|
components: {Posters, Footer, Indicator}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
isFixed: false, |
||||||
|
serviceEl: {}, |
||||||
|
serviceHeight: 0, |
||||||
|
contentIndex: 0, |
||||||
|
baseActiveIndex: 0, |
||||||
|
desc: null, |
||||||
|
tabContents: [], |
||||||
|
indicatorHeight: 42, |
||||||
|
indicatorFixed: false, |
||||||
|
refs: { |
||||||
|
header: null, |
||||||
|
headerHeight: 0, |
||||||
|
}, |
||||||
|
isMoreFunction: false, |
||||||
|
startLocationY: 0, |
||||||
|
moveYDistance: 0, |
||||||
|
} |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
bodyHeight() { |
||||||
|
return this.$store.state.bodyHeight |
||||||
|
}, |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
touchStart(e) { |
||||||
|
this.startLocationY = e.touches[0].pageY |
||||||
|
}, |
||||||
|
touchMove(e) { |
||||||
|
let distance = this.moveYDistance + e.touches[0].pageY - this.startLocationY |
||||||
|
console.log(distance) |
||||||
|
if (this.indicatorFixed && Math.abs(distance) > 380) { |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
} |
||||||
|
this.indicatorFixed = Math.abs(distance) > 380 |
||||||
|
this.$refs.scroll.style.transform = `translate3d(0,${distance}px,0)` |
||||||
|
}, |
||||||
|
touchEnd(e) { |
||||||
|
this.moveYDistance = this.moveYDistance + e.changedTouches[0].pageY - this.startLocationY |
||||||
|
console.log('end', this.moveYDistance) |
||||||
|
this.indicatorFixed = Math.abs(this.moveYDistance) > 380 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped lang='scss'> |
||||||
|
@import "../../assets/scss/index"; |
||||||
|
|
||||||
|
.fade-enter-active, |
||||||
|
.fade-leave-active { |
||||||
|
transition: all 0.3s ease; |
||||||
|
} |
||||||
|
|
||||||
|
.fade-enter-from, |
||||||
|
.fade-leave-to { |
||||||
|
transform: translateY(10px); |
||||||
|
opacity: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.Me { |
||||||
|
background: $main-bg; |
||||||
|
height: 100%; |
||||||
|
width: 100%; |
||||||
|
|
||||||
|
.no-more { |
||||||
|
font-size: 1.4rem; |
||||||
|
padding: 10px; |
||||||
|
color: gray; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.ul { |
||||||
|
font-size: 1.4rem; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
overflow-y: auto; |
||||||
|
overflow-x: hidden; |
||||||
|
padding: 0; |
||||||
|
margin: 0; |
||||||
|
position: absolute; |
||||||
|
color: white; |
||||||
|
background: $main-bg; |
||||||
|
|
||||||
|
.line { |
||||||
|
height: 1px; |
||||||
|
background: #cccccc; |
||||||
|
opacity: .1; |
||||||
|
margin: 5px 20px; |
||||||
|
} |
||||||
|
|
||||||
|
.li { |
||||||
|
box-sizing: border-box; |
||||||
|
background: $main-bg; |
||||||
|
width: 100%; |
||||||
|
padding: 1rem 2rem; |
||||||
|
list-style: none; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
line-height: 4rem; |
||||||
|
|
||||||
|
&:nth-last-child(1) { |
||||||
|
margin-bottom: 90px; |
||||||
|
} |
||||||
|
|
||||||
|
&:active { |
||||||
|
background: #454b65; |
||||||
|
} |
||||||
|
|
||||||
|
img { |
||||||
|
height: 20px; |
||||||
|
width: 20px; |
||||||
|
margin-right: 15px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.more-function { |
||||||
|
box-sizing: border-box; |
||||||
|
font-size: 1.2rem; |
||||||
|
width: 100%; |
||||||
|
position: absolute; |
||||||
|
background: $main-bg; |
||||||
|
|
||||||
|
.title { |
||||||
|
padding: 2rem 0 1rem 2rem; |
||||||
|
color: gray; |
||||||
|
} |
||||||
|
|
||||||
|
.functions { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 33.33% 33.33% 33.33%; |
||||||
|
|
||||||
|
color: white; |
||||||
|
|
||||||
|
.function { |
||||||
|
margin: 15px 0; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
|
||||||
|
img { |
||||||
|
border-radius: 50%; |
||||||
|
background: $second-btn-color-tran; |
||||||
|
padding: .6rem; |
||||||
|
height: 1.6rem; |
||||||
|
margin-bottom: 15px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.button-ctn { |
||||||
|
font-size: 1.4rem; |
||||||
|
z-index: 99999; |
||||||
|
width: 70vw; |
||||||
|
position: absolute; |
||||||
|
bottom: 0; |
||||||
|
background: $main-bg; |
||||||
|
|
||||||
|
.button { |
||||||
|
box-sizing: border-box; |
||||||
|
width: calc(100% - 4rem); |
||||||
|
background: $second-btn-color; |
||||||
|
margin: 2rem; |
||||||
|
height: 4.5rem; |
||||||
|
border-radius: 3px; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
color: white; |
||||||
|
|
||||||
|
img { |
||||||
|
height: 25px; |
||||||
|
width: 25px; |
||||||
|
margin-right: 15px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue