// pages/moments/list/momentslist.js const app = getApp() var innerAudioContext = wx.createInnerAudioContext() Page({ /** * 页面的初始数据 */ data: { columnId: '', type: '', speedStep: 5, //快进快退秒数 waitFlag: false, configMode: '2', //1单条数据 2多条数据 dataList: [], count: 2, isLoadMore: false, imgUrl: app.urls.baseImgUrl, isRefresh: false, title: '栏目内容' }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let _self = this _self.setData({ columnId: options.id, configMode: options.mode, type: options.type, title: options.title }) _self.getList() }, onShow() { if (this.data.isRefresh) { wx.startPullDownRefresh({}) this.setData({ isRefresh: false }) } }, //获取栏目数据 getList() { var _self = this wx.showLoading({ title: '加载中...', }) app.http.get(app.urls.getMomentsList.format({ configColumnId: _self.data.columnId }), { header: { token: app.globalData.token } }) .then(res => { wx.hideLoading({}) // 构建数据 // 1:文字,2:照片,3:音频,4:视频,5:链接,6:定位,7:文章 res.data.forEach(it => { it.list.forEach(item => { switch (item.dataType) { case '2': case '4': var items = item.value.split(',') var tempList = [] for (var i = 0; i < items.length; i++) { var urls = _self.data.imgUrl + items[i] var tempItem = { path: urls, imgPath: '../../../images/ic_temp.png' } tempList.push(tempItem) } item.valueList = tempList break case '6': //定位 var items = item.value.split('-') var tempList = [] for (var i = 0; i < items.length; i++) { //截取经纬度 var latlng = items[i].split(',') var tempItem = { latitude: latlng[0], //纬度 longitude: latlng[1], //经度 } tempList.push(tempItem) } item.valueList = tempList break case '3': //音频 var items = item.value.split(',') var tempList = [] for (var i = 0; i < items.length; i++) { var urls = _self.data.imgUrl + items[i] var tempItem = { path: urls, //地址 isPlay: false, //是否播放中 duration: 100, //时长 curDuation: 0, curDurationStr: '00:00', totalDurationStr: '00:00' } tempList.push(tempItem) } item.valueList = tempList break } }) }) _self.setData({ dataList: res.data }) wx.stopPullDownRefresh({}) }) .catch(err => { console.log(err) wx.stopPullDownRefresh({}) }) }, //展开更多 toggleHandler: function (e) { var that = this; var index = e.currentTarget.dataset.index; for (var i = 0; i < that.data.trendsList.length; i++) { if (index == i) { that.data.trendsList[index].auto = true; that.data.trendsList[index].seeMore = false; } } that.setData({ trendsList: that.data.trendsList }) }, //收起更多 toggleContent: function (e) { var that = this; var index = e.currentTarget.dataset.index; for (var i = 0; i < that.data.trendsList.length; i++) { if (index == i) { that.data.trendsList[index].auto = true; that.data.trendsList[index].seeMore = true; } } that.setData({ trendsList: that.data.trendsList }) }, //预览图片 viewImg(e) { wx.previewImage({ urls: [e.currentTarget.dataset.url], }) }, viewVideo(e) { var url = e.currentTarget.dataset.url wx.previewMedia({ sources: [{ url: url, type: 'video' }], }) }, onPullDownRefresh() { this.getList() }, onReachBottom() { console.log('触底了') }, play(e) { //进行播放 var index = e.currentTarget.dataset.index var item = e.currentTarget.dataset.item var idx = e.currentTarget.dataset.idx var ix = e.currentTarget.dataset.i var _self = this _self.data.dataList.forEach(it => { it.list.forEach(item => { if (item.valueList) { item.valueList.forEach(ii => { if (ii.isPlay) { innerAudioContext.stop() } ii.isPlay = false ii.curDuation = 0 ii.curDuationStr = '00:00' }) } }) }) if (!item.isPlay) { // innerAudioContext.stop() //找到该文件 innerAudioContext = wx.createInnerAudioContext() // 播放音频文件 innerAudioContext.src = _self.data.dataList[index].list[idx].valueList[ix].path innerAudioContext.autoplay = true } //先需要停止其他录音文件的播放 innerAudioContext.onPlay(() => { _self.data.dataList[index].list[idx].valueList[ix].isPlay = true _self.setData({ dataList: _self.data.dataList }) }); innerAudioContext.onCanplay((res) => { if (_self.data.waitFlag) { innerAudioContext.play() _self.setData({ waitFlag: false }) } }) innerAudioContext.onStop((res) => { _self.data.dataList[index].list[idx].valueList[ix].isPlay = false _self.data.dataList[index].list[idx].valueList[ix].curDuration = 0 _self.data.dataList[index].list[idx].valueList[ix].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) }) innerAudioContext.onEnded((res) => { _self.data.dataList[index].list[idx].valueList[ix].isPlay = false _self.data.dataList[index].list[idx].valueList[ix].curDuration = 0 _self.data.dataList[index].list[idx].valueList[ix].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) }) innerAudioContext.onError((res) => { _self.data.dataList[index].list[idx].valueList[ix].isPlay = false _self.data.dataList[index].list[idx].valueList[ix].curDuration = 0 _self.data.dataList[index].list[idx].valueList[ix].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) }) innerAudioContext.onSeeking(() => { console.log(innerAudioContext.currentTime) }) innerAudioContext.onWaiting(() => { innerAudioContext.pause() _self.setData({ waitFlag: true }) }) innerAudioContext.onTimeUpdate(() => { if (innerAudioContext.duration != Infinity) { _self.data.dataList[index].list[idx].valueList[ix].curDuration = parseInt(innerAudioContext.currentTime) _self.data.dataList[index].list[idx].valueList[ix].duration = parseInt(innerAudioContext.duration) var curM = parseInt(innerAudioContext.currentTime / 60) //分钟 var curS = parseInt(innerAudioContext.currentTime % 60) //秒 var tM = parseInt(innerAudioContext.duration / 60) //分钟 var tS = parseInt(innerAudioContext.duration % 60) //秒 var curMStr = curM > 9 ? curM : '0' + curM var curSStr = curS > 9 ? curS : '0' + curS var totalMStr = tM > 9 ? tM : '0' + tM var totalSStr = +tS > 9 ? tS : '0' + tS _self.data.dataList[index].list[idx].valueList[ix].curDurationStr = curMStr + ':' + curSStr _self.data.dataList[index].list[idx].valueList[ix].totalDurationStr = totalMStr + ':' + totalSStr _self.setData({ dataList: _self.data.dataList }) } }) }, //倒退5秒 rewind(e) { var _self = this var index = e.currentTarget.dataset.index var item = e.currentTarget.dataset.item var idx = e.currentTarget.dataset.idx var ix = e.currentTarget.dataset.i if (item.isPlay) { _self.data.dataList[index].list[idx].valueList[ix].curDuration = _self.data.dataList[index].list[idx].valueList[ix].curDuration - _self.data.speedStep innerAudioContext.seek(_self.data.dataList[index].list[idx].valueList[ix].curDuration) _self.setData({ dataList: _self.data.dataList }) } }, //快进5秒 speed(e) { var _self = this var index = e.currentTarget.dataset.index var item = e.currentTarget.dataset.item var idx = e.currentTarget.dataset.idx var ix = e.currentTarget.dataset.i if (item.isPlay) { _self.data.dataList[index].list[idx].valueList[ix].curDuration = _self.data.dataList[index].list[idx].valueList[ix] + _self.data.speedStep innerAudioContext.seek(_self.data.dataList[index].list[idx].valueList[ix].curDuration) _self.setData({ dataList: _self.data.dataList }) } }, slider4change(e) { var index = e.currentTarget.dataset.index var item = e.currentTarget.dataset.item if (item.isPlay) { innerAudioContext.seek(e.detail.value) } }, //删除 delItem(e) { wx.showModal({ title: '提示', content: '确定要删除该条数据吗?', cancelText: '取消', confirmText: '确定', success: res => { if (res.confirm) { this.doDelMoment(e.currentTarget.dataset.index) } } }) }, doDelMoment(index) { var _self = this wx.showLoading({ title: '删除中...', }) var item = _self.data.dataList[index] app.http.delete(app.urls.doDelMoment.format({ configColumnId: _self.data.columnId, uid: item.uid }), { header: { token: app.globalData.token } }) .then(res => { wx.hideLoading({}) wx.showToast({ title: '删除成功', icon: 'success' }) this.data.dataList.splice(index, 1) this.setData({ dataList: this.data.dataList }) wx.startPullDownRefresh({}) }) .catch(err => { console.log(err) wx.hideLoading({}) }) }, doPublish() { wx.navigateTo({ url: '../publish/momentpublishline?id=' + this.data.columnId + '&title=' + this.data.title }) }, editMoment(e) { var _self = this var item = _self.data.dataList[e.currentTarget.dataset.index] wx.navigateTo({ url: '../edit/momentedit?id=' + _self.data.columnId + '&uid=' + item.uid + '&title=' + _self.data.title }) } })