card-mini/pages/index/index.js
2021-07-06 15:44:56 +08:00

351 lines
11 KiB
JavaScript

const app = getApp()
var innerAudioContext = wx.createInnerAudioContext()
Page({
data: {
nameTxt: '名片',
dataList: [],
curIndex: 0, //用来记录请求次数
speedStep: 5, //快进快退秒数
waitFlag: false,
},
onLoad(options) {
this.doLogin()
},
// 登录
doLogin() {
var self = this;
wx.showLoading({
title: '加载中...',
})
wx.login({
success(res) {
app.http.post(app.urls.wxLogin, {
data: {
jsCode: res.code
}
})
.then(res => {
wx.hideLoading({})
var token = res.data.data.split('_')[0]
wx.setStorageSync('token', token)
wx.setStorageSync('bindPhone', res.data.data.split('_')[1])
app.globalData.token = token
self.getMainColumn()
})
.catch(err => {
wx.hideLoading({})
})
}
})
},
//获取首页展示的栏目
getMainColumn() {
var _self = this
app.http.get(app.urls.getMainColumn, {
header: {
token: app.globalData.token
}
})
.then(res => {
wx.showLoading({
title: '加载中...',
})
_self.getMainMoment(res.data, 0)
})
.catch(err => {
wx.stopPullDownRefresh({})
})
},
getMainMoment(datas, index) {
var _self = this
var count = datas.length
if (index < count) {
app.http.get(app.urls.getMainMoment.format({
configColumnId: datas[_self.data.curIndex].configColumnId
}), {
header: {
token: app.globalData.token
}
})
.then(res => {
if (res.data.length > 0) {
var tempItem = {
name: datas[_self.data.curIndex].configColumnName,
list: res.data
}
_self.data.dataList.push(tempItem)
}
_self.setData({
curIndex: ++_self.data.curIndex
})
_self.getMainMoment(datas, _self.data.curIndex)
})
.catch(err => {
_self.setData({
curIndex: ++_self.data.curIndex
})
_self.getMainMoment(datas, _self.data.curIndex)
})
} else {
wx.hideLoading({})
wx.stopPullDownRefresh({})
_self.buildMainData()
}
},
//构建主页显示数据
buildMainData() {
var _self = this
_self.data.dataList.forEach(it => {
it.list.forEach(item => {
item.list.forEach(iem => {
switch (iem.dataType) {
case '2': //图片
var items = iem.value.split(',')
var tempList = []
items.forEach(item => {
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 => {
var tempItem = {
id: item, //id
path: app.urls.baseImgUrl + item, //地址
isPlay: false, //是否播放中
duration: 100000, //时长
curDuration: 0,
curDurationStr: '00:00',
totalDurationStr: '00:00'
}
tempList.push(tempItem)
})
iem.valueList = tempList
break
case '4': //视频
var items = iem.value.split(',')
var tempList = []
items.forEach(item => {
var tempItem = {
id: item,
path: app.urls.baseImgUrl + item,
imgPath: '/images/ic_temp.png'
}
tempList.push(tempItem)
})
iem.valueList = tempList
break
case '6':
var items = iem.value.split('-')
var tempList = []
items.forEach(item => {
var latlng = item.split(',')
var tempItem = {
name: '',
address: '',
latitude: latlng[0],
longitude: latlng[1],
}
tempList.push(tempItem)
})
iem.valueList = tempList
break
}
})
})
})
_self.setData({
curIndex: 0,
dataList: _self.data.dataList
})
console.log(_self.data.dataList)
},
onPullDownRefresh() {
this.setData({
dataList: []
})
this.getMainColumn()
},
//预览图片
viewImg(e) {
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 idx = e.currentTarget.dataset.idx
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 => {
item.list.forEach(ix => {
if (ix.dataType == '3') {
if (ix.valueList) {
ix.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[idx].list[ix].valueList[a].path + '.mp3'
innerAudioContext.autoplay = true
console.log(_self.data.dataList[index].list[idx].list[ix].valueList[a].path)
} else {
innerAudioContext.stop()
}
innerAudioContext.onPlay(() => {
console.log('onPlay')
_self.data.dataList[index].list[idx].list[ix].valueList[a]['isPlay'] = true
_self.setData({
dataList: _self.data.dataList
})
});
innerAudioContext.onCanplay((res) => {
// if (_self.data.waitFlag) {
// innerAudioContext.play()
// _self.setData({
// waitFlag: false
// })
// }
})
innerAudioContext.onStop((res) => {
console.log('停止播放')
_self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
_self.setData({
dataList: _self.data.dataList,
})
innerAudioContext.destroy()
})
innerAudioContext.onEnded((res) => {
console.log(res)
console.log('播放完毕')
_self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
_self.setData({
dataList: _self.data.dataList,
})
innerAudioContext.destroy()
})
innerAudioContext.onError((res) => {
console.log('播放错误')
console.log(res)
_self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
_self.setData({
dataList: _self.data.dataList,
})
innerAudioContext.destroy()
})
innerAudioContext.onSeeking(() => {
// console.log(innerAudioContext.currentTime)
})
innerAudioContext.onWaiting(() => {
// console.log('onWaiting')
// innerAudioContext.pause()
// _self.setData({
// waitFlag: true
// })
})
innerAudioContext.onTimeUpdate(() => {
if (innerAudioContext.duration != Infinity) {
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = parseInt(innerAudioContext.currentTime)
_self.data.dataList[index].list[idx].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[idx].list[ix].valueList[a].curDurationStr = curMStr + ':' + curSStr
_self.data.dataList[index].list[idx].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 idx = e.currentTarget.dataset.idx
var a = e.currentTarget.dataset.a
var ix = e.currentTarget.dataset.i
if (item.isPlay) {
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = _self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration - _self.data.speedStep
innerAudioContext.seek(_self.data.dataList[index].list[idx].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 idx = e.currentTarget.dataset.idx
var a = e.currentTarget.dataset.a
var ix = e.currentTarget.dataset.i
if (item.isPlay) {
_self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = _self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration + _self.data.speedStep
innerAudioContext.seek(_self.data.dataList[index].list[idx].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)
}
},
testPlay() {
innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.src = 'http://192.168.0.115:8091/systemcard/route/file/download/true/aae9bede-3499-4b63-8ee3-75a5ae390335'
innerAudioContext.autoplay = true
}
})