Browse Source

debug

pull/19/head
zyronon 4 years ago
parent
commit
0e74f37569
  1. 26
      README.md
  2. BIN
      src/assets/img/icon/newicon/left_menu/clock.png
  3. 1
      src/assets/less/custom.less
  4. 36
      src/pages/me/Me.vue
  5. 182
      src/pages/me/MyMusic.vue
  6. 46
      src/pages/me/collect/VideoCollect.vue
  7. 6
      src/pages/me/rightMenu/LookHistory.vue
  8. 4
      src/pages/me/userinfo/EditUserInfo.vue
  9. 22
      src/pages/me/userinfo/EditUserInfoItem.vue
  10. 2
      src/store/index.js

26
README.md

@ -13,30 +13,24 @@
首页|50% 首页|50%
-- 音乐|☑ -- 音乐|☑
-- 抖音音乐榜|☑ -- 抖音音乐榜|☑
-- 搜索|50%; -- 搜索|50%
-- 直播|50%; -- 直播|50%
朋友|0% 朋友|0%
消息|80% 消息|80%
-- 私聊|☑
我|90% 我|90%
-- 求更新|☑
-- 关注|0 -- 关注|0
-- 粉丝|0 -- 粉丝|0
-- 编辑资料|☑ -- 编辑资料|☑
-- 添加朋友|☑ -- 添加朋友|☑
-- 我的音乐|30% -- 我的音乐|50%
-- 收藏视频\音乐|50%
-- 抖音商城|0 -- 抖音商城|0
-- 我的订单|0 -- 右侧菜单子页面|10%
-- 钱包|0 -- 设置|☑
-- 我的二维码|☑ -- -- 子页面|☑
-- 我的二维码|☑ 登录\注册|☑
-- 设置|30%
首页|
首页|
首页|
首页|
首页|
首页|
首页|
首页|
首页| 首页|
## 目标功能 ## 目标功能

BIN
src/assets/img/icon/newicon/left_menu/clock.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 7.1 KiB

1
src/assets/less/custom.less

@ -60,6 +60,7 @@
} }
.right { .right {
max-width: 80%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;

36
src/pages/me/Me.vue

@ -225,26 +225,30 @@
</div> </div>
<div class="line"></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')"> <div class="li" @click="$nav('/my-card')">
<img src="../../assets/img/icon/newicon/left_menu/qrcode.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/qrcode.png" alt="">
<span>我的二维码</span> <span>我的二维码</span>
</div> </div>
<div class="li" @click="$nav('')"> <div class="li" @click="$nav('/me/right-menu/look-history')">
<img src="../../assets/img/icon/newicon/left_menu/time.png" alt="">
<span>观看历史</span>
</div>
<div class="li" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/clock.png" alt="">
<span>时间管理</span>
</div>
<div class="li" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/workbench.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/workbench.png" alt="">
<span>创作者服务中心</span> <span>创作者服务中心</span>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="li" @click="$nav('MyCard')"> <div class="li" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/bytedance-mini-app.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/bytedance-mini-app.png" alt="">
<span>小程序</span> <span>小程序</span>
</div> </div>
<div class="li" @click="$nav('MyCard')"> <div class="li" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/gongyi.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/gongyi.png" alt="">
<span>抖音公益</span> <span>抖音公益</span>
</div> </div>
@ -252,7 +256,7 @@
<img src="../../assets/img/icon/newicon/left_menu/umbrella.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/umbrella.png" alt="">
<span>未成年保护工具</span> <span>未成年保护工具</span>
</div> </div>
<div class="li" @click="$nav('MyCard')"> <div class="li" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/headset.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/headset.png" alt="">
<span>我的客服</span> <span>我的客服</span>
</div> </div>
@ -264,38 +268,38 @@
<div v-else class="more-function"> <div v-else class="more-function">
<div class="title">生活服务</div> <div class="title">生活服务</div>
<div class="functions"> <div class="functions">
<div class="function"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/quan.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/quan.png" alt="">
<span>卡券</span> <span>卡券</span>
</div> </div>
<div class="function"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/sd-card.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/sd-card.png" alt="">
<span>免流量</span> <span>免流量</span>
</div> </div>
<div class="function" @click="$nav('MyCollect')"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/alarmmmmmmmmmmmm.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/alarmmmmmmmmmmmm.png" alt="">
<span>视频彩铃</span> <span>视频彩铃</span>
</div> </div>
</div> </div>
<div class="title">拓展功能</div> <div class="title">拓展功能</div>
<div class="functions"> <div class="functions">
<div class="function" @click="$nav('MyCard')"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/sun-one.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/sun-one.png" alt="">
<span>我的动态</span> <span>我的动态</span>
</div> </div>
<div class="function"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/download.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/download.png" alt="">
<span>我的缓存</span> <span>我的缓存</span>
</div> </div>
<div class="function" @click="$nav('MyCard')"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/hot.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/hot.png" alt="">
<span>上热门</span> <span>上热门</span>
</div> </div>
<div class="function" @click="$nav('MyCollect')"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/shop.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/shop.png" alt="">
<span>小店随心推</span> <span>小店随心推</span>
</div> </div>
<div class="function" @click="$nav('MyCollect')"> <div class="function" @click="$no">
<img src="../../assets/img/icon/newicon/left_menu/yuandi.png" alt=""> <img src="../../assets/img/icon/newicon/left_menu/yuandi.png" alt="">
<span>投教园地</span> <span>投教园地</span>
</div> </div>

182
src/pages/me/MyMusic.vue

@ -16,15 +16,15 @@
<div class="cover"> <div class="cover">
<img v-lazy="$imgPreview(music.cover)" alt=""> <img v-lazy="$imgPreview(music.cover)" alt="">
</div> </div>
<div class="lyrics-wrapper" ref="lyrics-wrapper"> <div class="lyrics-wrapper" ref="lyrics-wrapper" @click="isFullLyrics = true">
<div class="container"> <div class="container">
<div class="lyrics" v-for="item in lyricsTexts">{{ item.c }}</div> <div class="lyrics" v-for="item in lyricsFullTexts">{{ item.c }}</div>
</div> </div>
</div> </div>
<div class="lyrics-mask" @click="isFullLyrics = true"></div> <!-- <div class="lyrics-mask" @click="isFullLyrics = true"></div>-->
</div> </div>
<div class="lyrics-full" v-show="isFullLyrics" @click="isFullLyrics = false"> <div class="lyrics-full" v-show="isFullLyrics" @click="isFullLyrics = false">
<div class="list"> <div class="list" style="overflow:auto;">
<div class="item" v-for="item in lyricsFullTexts">{{ item.c }}</div> <div class="item" v-for="item in lyricsFullTexts">{{ item.c }}</div>
</div> </div>
</div> </div>
@ -36,7 +36,8 @@
</div> </div>
<div class="right"> <div class="right">
<div class="btn"> <div class="btn">
<img src="../../assets/img/icon/star-white.png" alt=""> <img src="../../assets/img/icon/star-white.png" v-show="!isCollect" @click="isCollect = !isCollect">
<img src="../../assets/img/icon/star-yellow.png" v-show="isCollect" @click="isCollect = !isCollect">
<span>收藏</span> <span>收藏</span>
</div> </div>
<div class="btn"> <div class="btn">
@ -72,7 +73,46 @@
</div> </div>
</div> </div>
</SlideItem> </SlideItem>
<SlideItem> <SlideItem style="overflow: auto;">
<div class="my-collect">
<div class="play-all">
<div class="left">
<img src="../../assets/img/icon/me/play-all.webp" alt="">
<span>播放全部</span>
<span class="num">(2)</span>
</div>
<img class="menu" src="../../assets/img/icon/menu-white.png" alt="">
</div>
<div class="collect-list">
<div class="item" v-for="item in collectMusic">
<div class="left">
<div class="cover-wrapper">
<img v-lazy="$imgPreview(item.cover)" alt="" class="cover">
</div>
<div class="desc">
<span class="name">{{ item.name }}</span>
<div class="author">{{ item.author }}</div>
<div class="desc-bottom">
<div class="tag">完整版</div>
<div class="duration">{{ $duration(item.duration) }}</div>
</div>
</div>
</div>
<div class="right">
<div class="collect-icon">
<img src="../../assets/img/icon/star-white.png" v-show="!isCollect" @click="isCollect = !isCollect">
<img src="../../assets/img/icon/star-yellow.png" v-show="isCollect" @click="isCollect = !isCollect">
</div>
</div>
</div>
</div>
<div class="recommend">
<span>推荐收藏</span>
<div class="right">
<span>自动播放</span>
</div>
</div>
</div>
</SlideItem> </SlideItem>
</SlideRowList> </SlideRowList>
</div> </div>
@ -81,19 +121,14 @@
import {mapState} from "vuex"; import {mapState} from "vuex";
import globalMethods from "../../utils/global-methods"; import globalMethods from "../../utils/global-methods";
import {nextTick} from "vue"; import {nextTick} from "vue";
// import lyricsFaruxue from '../../assets/data/lyrics/faruxue.txt'
import gaobaiqiqiu from '../../assets/data/lyrics/gaobaiqiqiu.lrc' import gaobaiqiqiu from '../../assets/data/lyrics/gaobaiqiqiu.lrc'
export default { export default {
name: "MyMusic", name: "MyMusic",
components: {}, components: {},
props: {
modelValue: false
},
data() { data() {
return { return {
slideIndex: 0, slideIndex: 1,
music: { music: {
name: '告白气球', name: '告白气球',
mp3: 'https://mp32.9ku.com/upload/128/2017/02/05/858423.mp3', mp3: 'https://mp32.9ku.com/upload/128/2017/02/05/858423.mp3',
@ -104,11 +139,14 @@ export default {
is_collect: false, is_collect: false,
is_play: false, is_play: false,
}, },
collectMusic: [],
recommendMusic: [],
lyricsTexts: [], lyricsTexts: [],
lyricsFullTexts: [], lyricsFullTexts: [],
isPlay: false, isPlay: false,
isLoop: false, isLoop: false,
isMove: false, isMove: false,
isCollect: false,
isFullLyrics: false, isFullLyrics: false,
lastPageX: 0, lastPageX: 0,
pageX: 0, pageX: 0,
@ -124,6 +162,7 @@ export default {
...mapState(['bodyWidth']) ...mapState(['bodyWidth'])
}, },
created() { created() {
this.getCollectMusic()
}, },
mounted() { mounted() {
this.audio.src = this.music.mp3 this.audio.src = this.music.mp3
@ -178,6 +217,15 @@ export default {
}) })
}, },
methods: { methods: {
async getCollectMusic() {
this.loading = true
let res = await this.$api.videos.collect()
this.loading = false
if (res.code === this.SUCCESS) {
this.collectMusic = res.data.music.list.slice(0, 2)
this.recommendMusic = res.data.music.list.slice(2, -1)
}
},
createLrcObj(lrc) { createLrcObj(lrc) {
let oLRC = { let oLRC = {
ti: "", // ti: "", //
@ -290,6 +338,12 @@ export default {
color: white; color: white;
font-size: 1.4rem; font-size: 1.4rem;
.base-slide-item {
&:nth-child(1) {
background: rgb(136, 132, 133);
}
}
.music-play { .music-play {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -480,6 +534,110 @@ export default {
} }
} }
.my-collect {
padding: @padding-page;
.play-all {
margin-bottom: 2rem;
display: flex;
justify-content: space-between;
align-items: center;
.left {
display: flex;
align-items: center;
img {
width: 3rem;
margin-right: 1rem;
}
.num {
color: gray;
margin-left: .5rem;
}
}
.menu {
height: 2rem;
}
}
.collect-list {
.item {
display: flex;
justify-content: space-between;
margin-bottom: 1.5rem;
.left {
display: flex;
.cover-wrapper {
margin-right: 1rem;
position: relative;
display: flex;
align-items: center;
justify-content: center;
.cover {
border-radius: .2rem;
@width: 6rem;
width: @width;
object-fit: cover;
height: @width;
}
}
.desc {
display: flex;
flex-direction: column;
justify-content: space-between;
.name {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
max-width: 40vw;
}
.author, .desc-bottom {
font-size: 1.2rem;
color: @second-text-color;
}
.desc-bottom {
display: flex;
align-items: center;
.tag {
font-size: 1rem;
background: @second-btn-color-tran;
padding: .2rem .5rem;
margin-right: .5rem;
}
.duration {
margin-right: 1.4rem;
position: relative;
}
}
}
}
.right {
display: flex;
align-items: center;
.collect-icon {
img {
width: 2.4rem;
}
}
}
}
}
}
} }
</style> </style>

46
src/pages/me/collect/VideoCollect.vue

@ -6,33 +6,57 @@
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <div class="content">
<Posters mode="normal" :list="videos"/> <Scroll class="Scroll"
<NoMore/> @pulldown="loadData">
<Posters mode="music" :list="videos"/>
<Loading :is-full-screen="false" v-if="loading"/>
<NoMore v-else/>
</Scroll>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import resource from "../../../assets/data/resource"; import resource from "../../../assets/data/resource";
import Posters from "../../../components/Posters"; import Posters from "../../../components/Posters";
import Scroll from "../../../components/Scroll";
export default { export default {
name: "VideoCollect", name: "VideoCollect",
components: { components: {
Posters Posters,
}, Scroll
props: {
modelValue: false
}, },
data() { data() {
return { return {
loading: false, loading: false,
videos: resource.my, total: 0,
pageNo: 0,
pageSize: 15,
videos: [],
} }
}, },
computed: {}, computed: {},
created() { created() {
this.loadData(true)
}, },
methods: {} methods: {
async loadData(init = false) {
if (this.loading) return
if (!init) {
if (this.total <= this.videos.length) {
return
}
this.pageNo++
}
this.loading = true
let res = await this.$api.videos.my({pageNo: this.pageNo, pageSize: this.pageSize,})
this.loading = false
if (res.code === this.SUCCESS) {
this.videos = this.videos.concat(res.data.list)
this.total = res.data.total
}
},
}
} }
</script> </script>
@ -50,7 +74,11 @@ export default {
font-size: 1.4rem; font-size: 1.4rem;
.content { .content {
padding-top: 6rem; padding-top: @header-height;
.Scroll {
height: calc(100vh - @header-height)!important;
}
} }
} }
</style> </style>

6
src/pages/me/rightMenu/LookHistory.vue

@ -75,10 +75,10 @@ export default {
computed: { computed: {
isClear() { isClear() {
if (this.currentSlideItemIndex === 0) { if (this.currentSlideItemIndex === 0) {
return this.historyVideo.list = [] return this.historyVideo.list.length
} }
return this.historyOther.list = [] return this.historyOther.list.length
} },
}, },
created() { created() {
this.getHistoryVideo(true) this.getHistoryVideo(true)

4
src/pages/me/userinfo/EditUserInfo.vue

@ -19,14 +19,14 @@
<div class="row" @click="$nav('/edit-userinfo-item',{type:1})"> <div class="row" @click="$nav('/edit-userinfo-item',{type:1})">
<div class="left">名字</div> <div class="left">名字</div>
<div class="right"> <div class="right">
<span>{{ isEmpty(userinfo.name) }}</span> <span>{{ isEmpty(userinfo.nickname) }}</span>
<back scale=".8" direction="right"></back> <back scale=".8" direction="right"></back>
</div> </div>
</div> </div>
<div class="row" @click="$nav('/edit-userinfo-item',{type:2})"> <div class="row" @click="$nav('/edit-userinfo-item',{type:2})">
<div class="left">抖音号</div> <div class="left">抖音号</div>
<div class="right"> <div class="right">
<span>{{ isEmpty(userinfo.account) }}</span> <span>{{ isEmpty(userinfo.unique_id) }}</span>
<back scale=".8" direction="right"></back> <back scale=".8" direction="right"></back>
</div> </div>
</div> </div>

22
src/pages/me/userinfo/EditUserInfoItem.vue

@ -17,22 +17,22 @@
<div v-if="type === 1"> <div v-if="type === 1">
<div class="notice">我的名字</div> <div class="notice">我的名字</div>
<div class="input-ctn" style="margin-bottom: 1rem;"> <div class="input-ctn" style="margin-bottom: 1rem;">
<input type="text" v-model="localUserinfo.name" placeholder="记得填写名字哦"> <input type="text" v-model="localUserinfo.nickname" placeholder="记得填写名字哦">
<img v-if="localUserinfo.name" <img v-if="localUserinfo.nickname"
style="transform: scale(2)" style="transform: scale(2)"
class="close" src="../../../assets/img/icon/newicon/close-and-bg.png" alt="" class="close" src="../../../assets/img/icon/newicon/close-and-bg.png" alt=""
@click="localUserinfo.name = ''"> @click="localUserinfo.nickname = ''">
</div> </div>
<div class="num">{{ localUserinfo.name.length }}/20</div> <div class="num">{{ localUserinfo.nickname.length }}/20</div>
</div> </div>
<div class="l-row" v-if="type === 2"> <div class="l-row" v-if="type === 2">
<div class="notice">我的抖音号</div> <div class="notice">我的抖音号</div>
<div class="input-ctn" style="margin-bottom: 1rem;"> <div class="input-ctn" style="margin-bottom: 1rem;">
<input type="text" v-model="localUserinfo.account"> <input type="text" v-model="localUserinfo.unique_id">
<img <img
v-if="localUserinfo.account" style="transform: scale(2)" v-if="localUserinfo.unique_id" style="transform: scale(2)"
class="close" src="../../../assets/img/icon/newicon/close-and-bg.png" alt="" class="close" src="../../../assets/img/icon/newicon/close-and-bg.png" alt=""
@click="localUserinfo.account = ''"> @click="localUserinfo.unique_id = ''">
</div> </div>
<div class="num">最多16个字只允许包含字母数字下划线和点30天内仅能修改一次</div> <div class="num">最多16个字只允许包含字母数字下划线和点30天内仅能修改一次</div>
</div> </div>
@ -65,11 +65,11 @@ export default {
}, },
computed: { computed: {
isChanged() { isChanged() {
if (this.type === 1) if (!this.localUserinfo.name) return false if (this.type === 1) if (!this.localUserinfo.nickname) return false
if (this.type === 2) if (!this.localUserinfo.desc) return false if (this.type === 2) if (!this.localUserinfo.desc) return false
if (this.userinfo.name !== this.localUserinfo.name) return true if (this.userinfo.nickname !== this.localUserinfo.nickname) return true
if (this.userinfo.desc !== this.localUserinfo.desc) return true if (this.userinfo.desc !== this.localUserinfo.desc) return true
return this.userinfo.account !== this.localUserinfo.account; return this.userinfo.unique_id !== this.localUserinfo.unique_id;
}, },
...mapState({ ...mapState({
userinfo: 'userinfo', userinfo: 'userinfo',
@ -89,7 +89,7 @@ export default {
async save() { async save() {
if (!this.isChanged) return if (!this.isChanged) return
if (this.type === 1) { if (this.type === 1) {
if (!this.localUserinfo.name) return this.$notice('名字不能为空') if (!this.localUserinfo.nickname) return this.$notice('名字不能为空')
} }
this.$showLoading() this.$showLoading()
this.$store.commit('setUserinfo', this.localUserinfo) this.$store.commit('setUserinfo', this.localUserinfo)

2
src/store/index.js

@ -37,7 +37,7 @@ const store = Vuex.createStore({
"last_login_time": "1630423555", "last_login_time": "1630423555",
"create_time": "1630423555", "create_time": "1630423555",
"status": 1, "status": 1,
"desc": `一个普普通通学表演的\n看到的人都能开开心心`, "desc": `一个普普通通学表演的\n看到的人都能开开心心~~~~~~~~~~~~~`,
"is_private": 1 "is_private": 1
}, },
friends: { friends: {

Loading…
Cancel
Save