You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
8.4 KiB
JavaScript
281 lines
8.4 KiB
JavaScript
2 years ago
|
// pages/index/index.js
|
||
|
import {
|
||
|
getDoneByTeam
|
||
|
} from '../../api/api'
|
||
|
|
||
|
Page({
|
||
|
|
||
|
/**
|
||
|
* 页面的初始数据
|
||
|
*/
|
||
|
data: {
|
||
|
tabs: ['已完成', '未完成'],
|
||
|
sendList: [],
|
||
|
tab: 0,
|
||
|
currentPlayIndex: null,
|
||
|
innerAudioContext: null,
|
||
|
playTime: 0,
|
||
|
timer: null,
|
||
|
id: '',
|
||
|
taskId: ''
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面加载
|
||
|
*/
|
||
|
onLoad(options) {
|
||
|
const innerAudioContext = wx.createInnerAudioContext({
|
||
|
useWebAudioImplement: true
|
||
|
})
|
||
|
|
||
|
innerAudioContext.onPlay(() => {
|
||
|
console.log("play")
|
||
|
this.setRowTime(this.data.playTime)
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].isPlay`]: true,
|
||
|
})
|
||
|
})
|
||
|
innerAudioContext.onSeeked(() => {
|
||
|
console.log("onSeeked")
|
||
|
|
||
|
if(this.data.innerAudioContext.paused) {
|
||
|
if (this.data.timer) {
|
||
|
clearInterval(this.data.timer)
|
||
|
}
|
||
|
this.data.timer = null
|
||
|
this.data.innerAudioContext.play()
|
||
|
} else {
|
||
|
if (this.data.timer == null) {
|
||
|
this.setRowTime(this.data.playTime)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
innerAudioContext.onStop(() => {
|
||
|
console.log("onStop")
|
||
|
if (this.data.timer) {
|
||
|
clearInterval(this.data.timer)
|
||
|
}
|
||
|
this.data.timer = null
|
||
|
if (this.data.currentPlayIndex != null) {
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].time`]: '00:00',
|
||
|
[`sendList[${this.data.currentPlayIndex}].isPlay`]: false,
|
||
|
[`sendList[${this.data.currentPlayIndex}].percentage`]: 0,
|
||
|
playTime: 0,
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
innerAudioContext.onEnded(() => {
|
||
|
console.log("onEnded")
|
||
|
if (this.data.timer) {
|
||
|
clearInterval(this.data.timer)
|
||
|
}
|
||
|
this.data.timer = null
|
||
|
if (this.data.currentPlayIndex != null) {
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].time`]: '00:00',
|
||
|
[`sendList[${this.data.currentPlayIndex}].isPlay`]: false,
|
||
|
[`sendList[${this.data.currentPlayIndex}].percentage`]: 0,
|
||
|
playTime: 0,
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
innerAudioContext.onTimeUpdate(() => {
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].percentage`]: Math.min(Math.ceil((this.data.playTime * 100000) / this.data.sendList[this.data.currentPlayIndex].duration), 100)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
this.data.innerAudioContext = innerAudioContext
|
||
|
this.data.taskId = options.taskId
|
||
|
this.data.id = options.id
|
||
|
this.getData()
|
||
|
},
|
||
|
|
||
|
setRowTime(second = 0) {
|
||
|
const that = this
|
||
|
this.data.timer = setInterval(function () {
|
||
|
second++;
|
||
|
that.data.playTime += 1;
|
||
|
if (that.data.playTime * 1000 >= that.data.sendList[that.data.currentPlayIndex].duration) {
|
||
|
clearInterval(that.data.timer)
|
||
|
that.data.timer = null
|
||
|
that.data.innerAudioContext.stop()
|
||
|
} else {
|
||
|
const result = that.formatSeconds(second)
|
||
|
that.setData({
|
||
|
[`sendList[${that.data.currentPlayIndex}].time`]: result,
|
||
|
})
|
||
|
}
|
||
|
}, 1000)
|
||
|
},
|
||
|
|
||
|
clickHandle(e) {
|
||
|
const urls = e.target.dataset.images || []
|
||
|
const index = e.target.dataset.index || 0
|
||
|
wx.previewImage({
|
||
|
current: urls[index], // 当前显示图片的http链接
|
||
|
urls, // 需要预览的图片http链接列表
|
||
|
})
|
||
|
},
|
||
|
|
||
|
onTabsChange(event) {
|
||
|
console.log(`Change tab, tab-panel value is ${event.detail.value}.`);
|
||
|
this.setData({
|
||
|
tab: event.detail.value
|
||
|
})
|
||
|
this.data.sendList = []
|
||
|
this.data.innerAudioContext.stop()
|
||
|
this.getData()
|
||
|
},
|
||
|
|
||
|
formatSeconds: function (value) {
|
||
|
var theTime = parseInt(value); // 秒
|
||
|
var theTime1 = 0; // 分
|
||
|
var theTime2 = 0; // 小时
|
||
|
if (theTime > 60) {
|
||
|
theTime1 = parseInt(theTime / 60);
|
||
|
theTime = parseInt(theTime % 60);
|
||
|
if (theTime1 > 60) {
|
||
|
theTime2 = parseInt(theTime1 / 60);
|
||
|
theTime1 = parseInt(theTime1 % 60);
|
||
|
}
|
||
|
}
|
||
|
var result = parseInt(theTime) < 10 ? '0' + parseInt(theTime) : parseInt(theTime);
|
||
|
if (theTime1 > 0) {
|
||
|
result = (parseInt(theTime1) < 10 ? '0' + parseInt(theTime1) : parseInt(theTime1)) + ":" + result;
|
||
|
} else {
|
||
|
result = "00:" + result;
|
||
|
}
|
||
|
if (theTime2 > 0) {
|
||
|
result = (parseInt(theTime2) < 10 ? '0' + parseInt(theTime2) : parseInt(theTime2)) + ":" + result;
|
||
|
} else {
|
||
|
result = "00:" + result;
|
||
|
}
|
||
|
return result.slice(3);
|
||
|
},
|
||
|
|
||
|
innerAudioRowStart(e) {
|
||
|
console.log(e.target.dataset.index)
|
||
|
if (this.data.timer) {
|
||
|
clearInterval(this.data.timer)
|
||
|
}
|
||
|
if (this.data.currentPlayIndex != null) {
|
||
|
this.data.timer = null
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].time`]: '00:00',
|
||
|
[`sendList[${this.data.currentPlayIndex}].isPlay`]: false,
|
||
|
[`sendList[${this.data.currentPlayIndex}].percentage`]: 0,
|
||
|
playTime: 0,
|
||
|
})
|
||
|
}
|
||
|
this.data.currentPlayIndex = e.target.dataset.index
|
||
|
this.data.innerAudioContext.src = this.data.sendList[this.data.currentPlayIndex].playUrl
|
||
|
this.data.innerAudioContext.play()
|
||
|
},
|
||
|
|
||
|
innerAudioRowStop(e) {
|
||
|
console.log(e.target.dataset.index)
|
||
|
this.data.currentPlayIndex = e.target.dataset.index
|
||
|
this.data.innerAudioContext.stop()
|
||
|
},
|
||
|
|
||
|
handleChange(e) {
|
||
|
console.log(this.data.currentPlayIndex);
|
||
|
console.log(e.target.dataset.index);
|
||
|
if (e.target.dataset.index != this.data.currentPlayIndex) {
|
||
|
return
|
||
|
}
|
||
|
if (this.data.timer) {
|
||
|
clearInterval(this.data.timer)
|
||
|
}
|
||
|
this.data.timer = null
|
||
|
const second = e.detail.value * this.data.innerAudioContext.duration / 100
|
||
|
this.setData({
|
||
|
[`sendList[${this.data.currentPlayIndex}].time`]: this.formatSeconds(second),
|
||
|
[`sendList[${this.data.currentPlayIndex}].isPlay`]: true,
|
||
|
[`sendList[${this.data.currentPlayIndex}].percentage`]: e.detail.value,
|
||
|
playTime: second,
|
||
|
})
|
||
|
this.data.innerAudioContext.seek(second)
|
||
|
},
|
||
|
|
||
|
getData() {
|
||
|
const param = {
|
||
|
teamId: this.data.id,
|
||
|
taskId: this.data.taskId,
|
||
|
jtTaskState: this.data.tab === 0 ? 2 : 1
|
||
|
}
|
||
|
getDoneByTeam(param).then(res => {
|
||
|
const arr = []
|
||
|
for (let i = 0; i < res.data.length; i++) {
|
||
|
const element = res.data[i];
|
||
|
const param = element.jtType == 1 ? JSON.parse(element.jtAttachment) : {}
|
||
|
arr.push({
|
||
|
...element,
|
||
|
imageUrls: element.jtAttachment ? element.jtAttachment.split(',') : [],
|
||
|
isPlay: false,
|
||
|
time: '00:00',
|
||
|
percentage: 0,
|
||
|
playUrl: param.url,
|
||
|
duration: param.duration,
|
||
|
durationTxt: this.formatSeconds(param.duration / 1000),
|
||
|
})
|
||
|
}
|
||
|
this.setData({
|
||
|
sendList: arr || []
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面初次渲染完成
|
||
|
*/
|
||
|
onReady() {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面显示
|
||
|
*/
|
||
|
onShow() {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面隐藏
|
||
|
*/
|
||
|
onHide() {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面卸载
|
||
|
*/
|
||
|
onUnload() {
|
||
|
if (this.data.innerAudioContext) {
|
||
|
this.data.innerAudioContext.destroy()
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||
|
*/
|
||
|
onPullDownRefresh() {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 页面上拉触底事件的处理函数
|
||
|
*/
|
||
|
onReachBottom() {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 用户点击右上角分享
|
||
|
*/
|
||
|
onShareAppMessage() {
|
||
|
|
||
|
}
|
||
|
})
|