feat: 样式调整
This commit is contained in:
+160
-6
@@ -14,6 +14,7 @@ Page({
|
||||
isPlaying: false,
|
||||
isVip: false,
|
||||
isLiked: false,
|
||||
isFavorited: false,
|
||||
currentTime: 0,
|
||||
duration: 0,
|
||||
currentTimeText: '00:00',
|
||||
@@ -27,7 +28,21 @@ Page({
|
||||
commentList: [],
|
||||
commentText: '',
|
||||
commentLoading: false,
|
||||
submitting: false
|
||||
submitting: false,
|
||||
// 分享面板
|
||||
// 分享面板
|
||||
showSharePanel: false,
|
||||
// 倍速 ActionSheet
|
||||
showSpeedSheet: false,
|
||||
speedItems: [
|
||||
{ label: '0.75x' },
|
||||
{ label: '1.0x' },
|
||||
{ label: '1.25x' },
|
||||
{ label: '1.5x' },
|
||||
{ label: '2.0x' }
|
||||
],
|
||||
// 频道节目列表(用于上/下期切换)
|
||||
_channelPrograms: []
|
||||
},
|
||||
|
||||
_isSeeking: false,
|
||||
@@ -102,10 +117,13 @@ Page({
|
||||
durationText: util.formatTime(gd.duration || content.duration),
|
||||
displayDate: dateStr,
|
||||
playbackRate: gd.playbackRate,
|
||||
statusBarHeight: gd.statusBarHeight || 0
|
||||
statusBarHeight: gd.statusBarHeight || 0,
|
||||
isLiked: !!content.hasLiked,
|
||||
isFavorited: content.HasFavorite === 1 || content.hasFavorite === 1
|
||||
})
|
||||
|
||||
this._updateDomain()
|
||||
this._loadChannelPrograms()
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -136,7 +154,7 @@ Page({
|
||||
},
|
||||
|
||||
/**
|
||||
* 查询当前节目点赞状态
|
||||
* 查询当前节目点赞和收藏状态(刷新最新值)
|
||||
*/
|
||||
_loadLikeStatus() {
|
||||
const content = this.data.activeContent
|
||||
@@ -144,11 +162,74 @@ Page({
|
||||
var self = this
|
||||
api.getProgramDetail(content.id).then(function (res) {
|
||||
if (res.code === 200 && res.data) {
|
||||
self.setData({ isLiked: !!res.data.isLiked })
|
||||
self.setData({
|
||||
isLiked: res.data.hasLiked === 1,
|
||||
isFavorited: res.data.HasFavorite === 1 || res.data.hasFavorite === 1
|
||||
})
|
||||
}
|
||||
}).catch(function () { })
|
||||
},
|
||||
|
||||
/**
|
||||
* 加载当前频道的节目列表(用于上/下期切换)
|
||||
*/
|
||||
_loadChannelPrograms() {
|
||||
const content = this.data.activeContent
|
||||
if (!content) return
|
||||
var channelId = content.channelId || (content.channel && content.channel.id)
|
||||
if (!channelId) return
|
||||
var self = this
|
||||
api.getProgramList({ channelId: channelId, current: 1, pageSize: 100 })
|
||||
.then(function (res) {
|
||||
if (res.code === 200 && res.data) {
|
||||
var list = res.data.list || res.data || []
|
||||
self.setData({ _channelPrograms: list })
|
||||
}
|
||||
}).catch(function () { })
|
||||
},
|
||||
|
||||
/**
|
||||
* 上一期
|
||||
*/
|
||||
onPrev() {
|
||||
var programs = this.data._channelPrograms
|
||||
var content = this.data.activeContent
|
||||
if (!content || programs.length === 0) {
|
||||
wx.showToast({ title: '没有更多了', icon: 'none' })
|
||||
return
|
||||
}
|
||||
var idx = -1
|
||||
for (var i = 0; i < programs.length; i++) {
|
||||
if (programs[i].id === content.id) { idx = i; break }
|
||||
}
|
||||
if (idx <= 0) {
|
||||
wx.showToast({ title: '已是第一期', icon: 'none' })
|
||||
return
|
||||
}
|
||||
app.playContent(programs[idx - 1])
|
||||
},
|
||||
|
||||
/**
|
||||
* 下一期
|
||||
*/
|
||||
onNext() {
|
||||
var programs = this.data._channelPrograms
|
||||
var content = this.data.activeContent
|
||||
if (!content || programs.length === 0) {
|
||||
wx.showToast({ title: '没有更多了', icon: 'none' })
|
||||
return
|
||||
}
|
||||
var idx = -1
|
||||
for (var i = 0; i < programs.length; i++) {
|
||||
if (programs[i].id === content.id) { idx = i; break }
|
||||
}
|
||||
if (idx < 0 || idx >= programs.length - 1) {
|
||||
wx.showToast({ title: '已是最新一期', icon: 'none' })
|
||||
return
|
||||
}
|
||||
app.playContent(programs[idx + 1])
|
||||
},
|
||||
|
||||
/**
|
||||
* 播放/暂停
|
||||
*/
|
||||
@@ -270,7 +351,6 @@ Page({
|
||||
this.setData({ isLiked: !wasLiked })
|
||||
api.toggleLike(content.id).then(function (res) {
|
||||
if (res.code !== 200) {
|
||||
// 回滚
|
||||
self.setData({ isLiked: wasLiked })
|
||||
wx.showToast({ title: res.msg || '操作失败', icon: 'none' })
|
||||
} else {
|
||||
@@ -282,6 +362,29 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
onFavorite() {
|
||||
const content = this.data.activeContent
|
||||
if (!content) return
|
||||
const self = this
|
||||
const wasFavorited = this.data.isFavorited
|
||||
// 乐观更新
|
||||
this.setData({ isFavorited: !wasFavorited })
|
||||
const fn = wasFavorited
|
||||
? api.removeFavorite(content.id)
|
||||
: api.addFavorite(content.id)
|
||||
fn.then(function (res) {
|
||||
if (res.code !== 200) {
|
||||
self.setData({ isFavorited: wasFavorited })
|
||||
wx.showToast({ title: res.msg || '操作失败', icon: 'none' })
|
||||
} else {
|
||||
wx.showToast({ title: wasFavorited ? '已取消收藏' : '已收藏 🔖', icon: 'none' })
|
||||
}
|
||||
}).catch(function () {
|
||||
self.setData({ isFavorited: wasFavorited })
|
||||
wx.showToast({ title: '网络异常', icon: 'none' })
|
||||
})
|
||||
},
|
||||
|
||||
// ===== 评论弹层 =====
|
||||
|
||||
onOpenComments() {
|
||||
@@ -358,11 +461,62 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
onShareTap() {
|
||||
this.setData({ showSharePanel: true })
|
||||
},
|
||||
|
||||
onCloseShare() {
|
||||
this.setData({ showSharePanel: false })
|
||||
},
|
||||
|
||||
/**
|
||||
* 朋友圈分享按钮点击 → 引导用户使用右上角胶囊菜单
|
||||
* 微信小程序限制:无法编程式触发朋友圈分享,只能从胶囊菜单触发
|
||||
*/
|
||||
onShareMomentTip() {
|
||||
this.setData({ showSharePanel: false })
|
||||
wx.showModal({
|
||||
title: '分享到朋友圈',
|
||||
content: '请点击右上角「···」菜单,选择「分享」即可发布到朋友圈',
|
||||
showCancel: false,
|
||||
confirmText: '我知道了'
|
||||
})
|
||||
},
|
||||
|
||||
onShare() {
|
||||
wx.showToast({ title: '分享功能开发中', icon: 'none' })
|
||||
this.onShareTap()
|
||||
},
|
||||
|
||||
goBack() {
|
||||
wx.navigateBack()
|
||||
},
|
||||
|
||||
// ===== 小程序分享生命周期钩子 =====
|
||||
|
||||
/**
|
||||
* 转发给朋友(胶囊菜单内「转发」,或 button open-type=share 触发)
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
const content = this.data.activeContent || {}
|
||||
const domain = this.data.domain || {}
|
||||
this.setData({ showSharePanel: false })
|
||||
return {
|
||||
title: (domain.name ? '【' + domain.name + '】' : '') + (content.title || '全声汇'),
|
||||
path: '/pages/index/index',
|
||||
imageUrl: ''
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 分享到朋友圈(定义此函数后,胶囊菜单中「分享」自动出现)
|
||||
*/
|
||||
onShareTimeline() {
|
||||
const content = this.data.activeContent || {}
|
||||
const domain = this.data.domain || {}
|
||||
return {
|
||||
title: (domain.name ? '【' + domain.name + '】' : '') + (content.title || '全声汇'),
|
||||
query: '',
|
||||
imageUrl: ''
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user