import { storeBindingsBehavior } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' import { publishWorks, postWorksScore, publishRankWorks } from '~/api/works' import { userEvent } from '~/api/global' Component({ behaviors: [storeBindingsBehavior], storeBindings: { store, fields: { readDetail: 'readDetail' }, actions: { setReadDetail: 'setReadDetail' } }, /** * 组件的属性列表 */ properties: { readingType: '', activityId: '' }, /** * 组件的初始数据 */ data: { tempFilePath: '', uploadSuccess: false, uploadFlag: false, // 是否上传过 uploadState: false, percent: 0, }, /** * 组件的方法列表 */ methods: { async upload() { if (this.data.uploadState) { return } this.setData({ uploadFlag: true }) const uploadTask = wx.uploadFile({ url: 'https://reader-api.ai160.com//file/upload', filePath: this.data.readDetail.tempFilePath, name: '朗读录音', header: { uid: wx.getStorageSync('uid') }, success: (res) => { const formateRes = JSON.parse(res.data); let audioPath = formateRes.data; this.uploadWorks(audioPath); }, complete: () => { this.setData({ uploadFlag: false }) } }) uploadTask.onProgressUpdate((res) => { this.setData({ percent: res.progress }) }) await userEvent({ action: 'WXUPLOAD', }) }, cancelMask() { this.setData({ uploadSuccess: false }) }, async uploadWorks(audio) { const data = { exampleId: this.data.readDetail.id, audioPath: audio, originVideo: this.data.readDetail.originVideo, activityId: this.properties.activityId }; let res if (this.properties.readingType == 'readMatch') { res = await publishRankWorks(data) } else { res = await publishWorks(data) } console.log('shareVideo', res); wx.setStorageSync('shareVideoId', res.id) let _data = this.data.readDetail let scoreRes = await postWorksScore({ "userReadId": res.id, "complete": _data.integrity, "accuracy": _data.accuracy, "speed": _data.fluency, "intonation": _data.tone, "score": _data.myOverall }) this.setData({ uploadState: true, uploadSuccess: true, }) }, }, })