// pages/moments/showlist/showlist.js const app = getApp() var innerAudioContext = wx.createInnerAudioContext() Page({ data: { currentIndex: 0, tabList: [], curId: '', //当前栏目ID tempUserId: '', //当前栏目用户ID dataList: [], //当前数据 speedStep: 5, //快进快退秒数 waitFlag: false, topHeight: app.globalData.CustomBar, currentTab: '', //当前选中的栏目 count: 3, }, onLoad(options) { this.setData({ curId: options.id, tempUserId: options.userId, }) this.getTabs() }, getTabs() { var _self = this wx.showLoading({ title: '加载中...', }) app.http.get(app.urls.getMainColumn, { header: { token: app.globalData.token }, data: { cardTemplateUseId: _self.data.tempUserId } }) .then(res => { for (var i = 0; i < res.data.length; i++) { if (res.data[i].configColumnId == _self.data.curId) { _self.setData({ currentTab: res.data[i], currentIndex: i }) } } wx.hideLoading({}) _self.setData({ tabList: res.data }) _self.getMainMoment(_self.data.curId) }) .catch(err => { wx.hideLoading({}) }) }, //切换标签 onChange(e) { var index = e.detail.index var id = this.data.tabList[index].configColumnId var _self = this _self.setData({ currentIndex: index, currentTab: this.data.tabList[index] }) //重新请求数据 _self.getMainMoment(id) }, getMainMoment(id) { wx.showLoading({ title: '加载中...', }) var _self = this app.http.get(app.urls.getMainMoment.format({ configColumnId: id }), { header: { token: app.globalData.token }, data: { userId: _self.data.tempUserId } }) .then(res => { wx.hideLoading({}) _self.buildMainData(res.data) }) .catch(err => { wx.hideLoading({}) }) }, buildMainData(datas) { var _self = this var ids = '' datas.forEach(it => { var options = _self.data.tabList[_self.data.currentIndex] var isOpen = options.configColumnCollect == '2' || options.configColumnCollect == '4' || options.configColumnLike == '2' && options.configColumnLike == '4' || options.configColumnDispatch == '2' || options.configColumnDispatch == '4' || options.configColumnComment == '2' || options.configColumnComment == '4' it.cId = _self.data.tabList[_self.data.currentIndex].configColumnId it.collectSwitch = _self.data.tabList[_self.data.currentIndex].configColumnCollect //收藏开关 it.commentSwitch = _self.data.tabList[_self.data.currentIndex].configColumnComment //评论开关 it.shareSwitch = _self.data.tabList[_self.data.currentIndex].configColumnDispatch //转发开关 it.likeSwitch = _self.data.tabList[_self.data.currentIndex].configColumnLike //点赞开关 it.funcSwitch = isOpen ids += it.uid + ',' // 初始化评论 点赞 收藏状态 it.collectCount = 0 it.collectStatus = false it.commentCount = 0 it.dispatchCount = 0 it.likeCount = 0 it.likeStatus = false it.scansCount = 0 it.list.forEach(iem => { switch (iem.dataType) { case '2': //图片 var photoIds = iem.value.split('@') if (photoIds.length > 1) { //展示方式 iem.dataMode = photoIds[1] } else { iem.dataMode = '1' } var items = photoIds[0].split(',') var tempList = [] items.forEach(item => { if (item.length > 0) { var tempItem = { id: item, path: app.urls.baseImgUrl + item, } tempList.push(tempItem) } }) iem.valueList = tempList break case '3': //音频 var items = iem.value.split(',') var tempList = [] items.forEach(item => { if (item.length > 0) { var ss = item.split('&') var totalStr = '00:00' if (ss.length > 1) { var dur = ss[1] var tM = parseInt(dur / 60) //分钟 var tS = parseInt(dur % 60) //秒 var totalMStr = tM > 9 ? tM : '0' + tM var totalSStr = +tS > 9 ? tS : '0' + tS totalStr = totalMStr + ':' + totalSStr } var tempItem = { id: ss[0], //id path: app.urls.baseImgUrl + ss[0], //地址 isPlay: false, //是否播放中 duration: 100000, //时长 curDuration: 0, curDurationStr: '00:00', totalDurationStr: totalStr } tempList.push(tempItem) } }) iem.valueList = tempList break case '4': //视频 var items = iem.value.split(',') var tempList = [] for (var i = 0; i < items.length; i++) { if (items[i].length > 0) { var ss = items[i].split('&') var videoUrl = app.urls.baseImgUrl + ss[0] var imgUrl = app.urls.baseImgUrl + ss[1] var tempItem = { path: videoUrl, imgPath: imgUrl } tempList.push(tempItem) } } iem.valueList = tempList break case '6': var items = iem.value.split('-') var tempList = [] items.forEach(item => { if (item.length > 0) { var latlng = item.split(',') var tempItem = { name: '', address: '', latitude: latlng[0], longitude: latlng[1], } tempList.push(tempItem) } }) iem.valueList = tempList break case '8': //单选 iem.dictionariesList.forEach(ss => { if (iem.value.indexOf(ss.dataId) != -1) { iem.selValue = ss.dataName } }) break case '9': //多选 iem.dictionariesList.forEach(ss => { if (iem.value.indexOf(ss.dataId) != -1) { ss.isSel = true } else { ss.isSel = false } }) break } }) }) _self.setData({ dataList: datas }) _self.getColumnContentHandle(ids) }, //获取栏目内容点赞 收藏 评论 getColumnContentHandle(ids) { var _self = this wx.showLoading({ title: '加载中...', }) app.http.get(app.urls.getColumnContentHandle.format({ projectId: 'column', businessIds: ids }), { header: { token: app.globalData.token } }) .then(res => { wx.hideLoading({}) res.data.forEach(it => { _self.data.dataList.forEach(item => { if (item.uid == it.businessId) { item.collectCount = it.collectCount item.collectStatus = it.collectStatus item.commentCount = it.commentCount item.dispatchCount = it.dispatchCount item.likeCount = it.likeCount item.likeStatus = it.likeStatus item.scansCount = it.scansCount } }) }) _self.setData({ dataList: _self.data.dataList }) }) .catch(err => { }) }, //预览图片 viewImg(e) { var imgPaths = [] var imgs = e.currentTarget.dataset.values this.setData({ isNeedRefresh: false }) imgs.forEach(it => { imgPaths.push(it.path) }) wx.previewImage({ urls: imgPaths, current: e.currentTarget.dataset.cur }) // wx.previewImage({ // urls: [e.currentTarget.dataset.url], // }) }, //预览视频 viewVideo(e) { var url = e.currentTarget.dataset.url wx.previewMedia({ sources: [{ url: url, type: 'video' }], }) }, play(e) { //进行播放 const _self = this const index = e.currentTarget.dataset.index const ix = e.currentTarget.dataset.i const a = e.currentTarget.dataset.a var audio = e.currentTarget.dataset.item //先需要停止其他录音文件的播放 _self.data.dataList.forEach(it => { it.list.forEach(item => { if (item.dataType == '3') { if (item.valueList) { item.valueList.forEach(ii => { if (ii.isPlay) { innerAudioContext.stop() } ii.isPlay = false ii.curDuration = 0 ii.curDuationStr = '00:00' }) } } }) }) if (!audio.isPlay) { innerAudioContext = wx.createInnerAudioContext() innerAudioContext.src = _self.data.dataList[index].list[ix].valueList[a].path + '.mp3' innerAudioContext.autoplay = true } else { innerAudioContext.stop() } innerAudioContext.onPlay(() => { console.log('onPlay') _self.data.dataList[index].list[ix].valueList[a]['isPlay'] = true _self.setData({ dataList: _self.data.dataList }) }); innerAudioContext.onCanplay((res) => {}) innerAudioContext.onStop((res) => { _self.data.dataList[index].list[ix].valueList[a].isPlay = false _self.data.dataList[index].list[ix].valueList[a].curDuration = 0 _self.data.dataList[index].list[ix].valueList[a].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) innerAudioContext.destroy() }) innerAudioContext.onEnded((res) => { _self.data.dataList[index].list[ix].valueList[a].isPlay = false _self.data.dataList[index].list[ix].valueList[a].curDuration = 0 _self.data.dataList[index].list[ix].valueList[a].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) innerAudioContext.destroy() }) innerAudioContext.onError((res) => { _self.data.dataList[index].list[ix].valueList[a].isPlay = false _self.data.dataList[index].list[ix].valueList[a].curDuration = 0 _self.data.dataList[index].list[ix].valueList[a].curDurationStr = '00:00' _self.setData({ dataList: _self.data.dataList, }) innerAudioContext.destroy() }) innerAudioContext.onSeeking(() => {}) innerAudioContext.onWaiting(() => {}) innerAudioContext.onTimeUpdate(() => { if (innerAudioContext.duration != Infinity) { _self.data.dataList[index].list[ix].valueList[a].curDuration = parseInt(innerAudioContext.currentTime) _self.data.dataList[index].list[ix].valueList[a].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[ix].valueList[a].curDurationStr = curMStr + ':' + curSStr _self.data.dataList[index].list[ix].valueList[a].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 a = e.currentTarget.dataset.a var ix = e.currentTarget.dataset.i if (item.isPlay) { _self.data.dataList[index].list[ix].valueList[a].curDuration = _self.data.dataList[index].list[ix].valueList[a].curDuration - _self.data.speedStep innerAudioContext.seek(_self.data.dataList[index].list[ix].valueList[a].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 a = e.currentTarget.dataset.a var ix = e.currentTarget.dataset.i if (item.isPlay) { _self.data.dataList[index].list[ix].valueList[a].curDuration = _self.data.dataList[index].list[ix].valueList[a].curDuration + _self.data.speedStep innerAudioContext.seek(_self.data.dataList[index].list[ix].valueList[a].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) } }, onUnload(res) { if (innerAudioContext) { innerAudioContext.stop() } }, // 显示详情 showDetail(e) { if (this.data.currentTab.configColumnType.indexOf('dda5007c-5fb7-48f2-8537-3cb8ea298242') != -1) { //需要跳详情 var cId = this.data.currentTab.configColumnId var uId = e.currentTarget.dataset.uid console.log(e) wx.navigateTo({ url: '/packagecard/moments/momentsdetail/momentsdetail?uId=' + uId + '&cId=' + cId, }) } }, //显示评论 showComment(e) { //需要跳详情 var cId = e.currentTarget.dataset.cid var uId = e.currentTarget.dataset.uid var like = e.currentTarget.dataset.like var collect = e.currentTarget.dataset.collect var comment = e.currentTarget.dataset.comment var share = e.currentTarget.dataset.share var params = '&collectSwitch=' + collect + '&likeSwitch=' + like + '&commentSwitch=' + comment + '&shareSwitch=' + share console.log(params) wx.navigateTo({ url: '/packagecard/moments/momentsdetail/momentsdetail?uId=' + uId + '&cId=' + cId + params, }) }, //点赞 doLike(e) { var _self = this var item = e.currentTarget.dataset.item var index = e.currentTarget.dataset.index //栏目索引 var favor = item.likeStatus var msg = '' if (favor) { msg = '取消中...' } else { msg = '保存中...' } wx.showLoading({ title: msg, }) app.http.post(app.urls.doSaveLike, { header: { token: app.globalData.token }, data: { businessId: item.uid, projectId: 'column' } }) .then(res => { wx.hideLoading({}) _self.data.dataList[index].likeStatus = !item.likeStatus if (item.likeStatus) { --_self.data.dataList[index].likeCount } else { ++_self.data.dataList[index].likeCount } _self.setData({ dataList: _self.data.dataList }) }) .catch(err => {}) }, //收藏 doCollect(e) { var _self = this var item = e.currentTarget.dataset.item var index = e.currentTarget.dataset.index //栏目索引 var favor = item.collectStatus var msg = '' if (favor) { msg = '取消收藏...' } else { msg = '收藏中...' } wx.showLoading({ title: msg, }) app.http.post(app.urls.doSaveCollect, { header: { token: app.globalData.token }, data: { businessId: item.uid, projectId: 'column' } }) .then(res => { wx.hideLoading({}) _self.data.dataList[index].collectStatus = !item.collectStatus _self.setData({ dataList: _self.data.dataList }) }) .catch(err => {}) } })