import { storeBindingsBehavior } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' import { userEvent } from '~/api/global' import { publishWorks, postWorksScore, publishRankWorks } from '~/api/works' Component({ behaviors: [storeBindingsBehavior], storeBindings: { store, fields: { readDetail: 'readDetail' }, }, /** * 组件的属性列表 */ properties: { readingType: { type: String, value: "" }, activityId: '' }, /** * 组件的初始数据 */ data: { tempFilePath: '', uploadSuccess: false, uploadFlag: false, // 是否上传过 uploadState: false, percent: 0, userReadId: '', tips: false }, /** * 组件的方法列表 */ 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); }, fail: () => { wx.showToast({ title: '上传失败请重试', icon: 'error', duration: 2000 }) this.setData({ uploadFlag: false }) } }) uploadTask.onProgressUpdate((res) => { console.log(res.progress, 'ppppp'); this.setData({ percent: res.progress - 1 }) }) 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) } wx.setStorageSync('shareVideoId', res.id) let _data = this.data.readDetail let scoreRes = {} // if (_data.businessType != 2) { scoreRes = await postWorksScore({ userReadId: res.id, complete: _data.integrity, accuracy: _data.accuracy, speed: _data.fluency, intonation: _data.tone, score: _data.myOverall, }) // } console.log(scoreRes, 'scoreRes'); this.setData({ uploadFlag: false, uploadState: true, uploadSuccess: true, userReadId: res.id, }) }, beforeleave() { this.setData({ uploadState: true }) }, jumpWork() { wx.redirectTo({ url: '/pages/userWorks/index' }) } }, })