chore: initialize frontend repo with teaching terminology updates
Add the current frontend codebase with a baseline .gitignore and update piano-specific UI terms to teaching-oriented terms for the current product context. Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
//index.js
|
||||
//获取应用实例
|
||||
const app = getApp()
|
||||
const { uuid, warn } = require("../../utils/util")
|
||||
const Upyun = require('../../utils/upyun-wxapp-sdk')
|
||||
const upyun = new Upyun({
|
||||
bucket: app.globalData.upyun.bucket,
|
||||
operator: app.globalData.upyun.operator,
|
||||
getSignatureUrl: `${app.globalData.server}/api/v1/uc/upyun_token`,
|
||||
})
|
||||
|
||||
const upload = (src, callback) => {
|
||||
let { host } = app.globalData.upyun;
|
||||
let ext = src.split(".").reverse()[0]
|
||||
let name = `${uuid()}.${ext}`;
|
||||
let remotePath = `/daily-music/records/${name}`
|
||||
|
||||
upyun.upload({
|
||||
localPath: src,
|
||||
remotePath,
|
||||
success: function (res) {
|
||||
wx.hideLoading()
|
||||
callback(host + remotePath)
|
||||
},
|
||||
fail: function ({ errMsg }) {
|
||||
wx.hideLoading();
|
||||
callback(false, errMsg)
|
||||
console.log('upload fail, errMsg is', errMsg)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
audio: null,
|
||||
video: null,
|
||||
recorder: null,
|
||||
recording: false,
|
||||
playing: false,
|
||||
record: '',
|
||||
replaying: false,
|
||||
redo: false
|
||||
},
|
||||
//事件处理函数
|
||||
bindRecord: function() {
|
||||
let { recorder, video, recording } = this.data;
|
||||
|
||||
this.setData({record: '', redo: recording, playing: true}, () => {
|
||||
if(recording) recorder.stop();
|
||||
else {
|
||||
video.seek(0)
|
||||
video.play();
|
||||
console.log('recorder start...')
|
||||
recorder.start({format: 'mp3'})
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
bindPlayRecord(){
|
||||
let { audio, record, video, playing } = this.data;
|
||||
if(!record) {
|
||||
warn("您还没有进行录音")
|
||||
return;
|
||||
}
|
||||
if(playing) {
|
||||
video.stop();
|
||||
}
|
||||
audio.src = record;
|
||||
audio.play();
|
||||
this.setData({replaying: true})
|
||||
},
|
||||
bindPlay(){
|
||||
let { video, audio, replaying } = this.data;
|
||||
if(replaying) {
|
||||
audio.stop();
|
||||
}
|
||||
video.seek(0)
|
||||
this.setData({playing: true}, () => {
|
||||
video.play();
|
||||
})
|
||||
},
|
||||
bindStop(){
|
||||
let { video } = this.data;
|
||||
video.stop()
|
||||
this.setData({playing: false})
|
||||
},
|
||||
bindSubmit(){
|
||||
wx.showLoading({
|
||||
title: '正在提交数据...',
|
||||
success(){
|
||||
setTimeout(() => {
|
||||
wx.hideLoading({
|
||||
success: (res) => {
|
||||
warn("您的录音已提交!")
|
||||
},
|
||||
})
|
||||
}, 3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
onVideoEnd(){
|
||||
let { recording, recorder } = this.data;
|
||||
if(recording){
|
||||
wx.showLoading({
|
||||
title: '正在处理录音,请稍候...',
|
||||
})
|
||||
recorder.stop();
|
||||
}
|
||||
},
|
||||
onVideoPause(){
|
||||
let { recording, recorder } = this.data;
|
||||
if(recording){
|
||||
recorder.pause();
|
||||
}
|
||||
},
|
||||
onLoad: function () {
|
||||
let audio = wx.createInnerAudioContext()
|
||||
let video = wx.createVideoContext('sample')
|
||||
let recorder = wx.getRecorderManager();
|
||||
|
||||
recorder.onError((err) => {
|
||||
console.log('error...', err)
|
||||
this.setData({recording: false})
|
||||
})
|
||||
recorder.onStart(() => {
|
||||
console.log("...start....")
|
||||
this.setData({recording: true})
|
||||
})
|
||||
recorder.onStop(({tempFilePath, duration, fileSize}) => {
|
||||
this.setData({recording: false})
|
||||
if(this.data.redo) {
|
||||
video.seek(0)
|
||||
video.play();
|
||||
recorder.start({format: 'mp3'})
|
||||
this.setData({redo: false})
|
||||
return;
|
||||
}
|
||||
upload(tempFilePath, (filename, errorMsg) => {
|
||||
if(!filename) {
|
||||
warn("录音出现了问题,再来一遍吧~")
|
||||
} else {
|
||||
this.setData({record: filename})
|
||||
}
|
||||
})
|
||||
})
|
||||
this.setData({recorder, video, audio})
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user