|
@@ -0,0 +1,563 @@
|
|
|
+
|
|
|
+const app = getApp();
|
|
|
+//创建录音管理
|
|
|
+const recorderManager = wx.getRecorderManager();
|
|
|
+//创建播放管理器
|
|
|
+const innerAudioContext = wx.createInnerAudioContext();
|
|
|
+innerAudioContext.autoplay = false;
|
|
|
+var filescount = 0;
|
|
|
+var files = [];
|
|
|
+var uploadFlag = 0; //1=上传出错 0=正常
|
|
|
+var filesindex = 0;
|
|
|
+Page({
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 页面的初始数据
|
|
|
+ */
|
|
|
+ data: {
|
|
|
+ mode: 0,
|
|
|
+ taskContent: {
|
|
|
+ title: '任务内容',
|
|
|
+ showImg: '/images/icons/recording.png',
|
|
|
+ playImg: '/images/icons/play.png',
|
|
|
+ blImg: '/images/icons/bl.png',
|
|
|
+ readingImg: '/images/icons/recording.png',
|
|
|
+ luyinzhongImg: '/images/icons/luyinzhong.png',
|
|
|
+ stopPlayImg: '/images/icons/zanting.png',
|
|
|
+ delimg: '/images/icons/newdel.png',
|
|
|
+ taskRadioType: '1',
|
|
|
+ radioUrl: '',
|
|
|
+ second: 10
|
|
|
+ },
|
|
|
+ rightImage:"/images/icons/toRight.png",
|
|
|
+ images:[],
|
|
|
+ videos:[],
|
|
|
+ voices: '',
|
|
|
+ imagesAdd: '/images/icons/camera.png',
|
|
|
+ wyPhone:"",
|
|
|
+ depId:0,
|
|
|
+ content:"",
|
|
|
+ depName:"",
|
|
|
+ form:{
|
|
|
+ images: [],
|
|
|
+ videos: [],
|
|
|
+ voices: []
|
|
|
+ },
|
|
|
+ isHide:0
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面加载
|
|
|
+ */
|
|
|
+ onLoad: function (options) {
|
|
|
+ let that = this;
|
|
|
+ this.setData({
|
|
|
+ mode: options.mode
|
|
|
+ })
|
|
|
+ wx.setNavigationBarTitle({
|
|
|
+ title: options.name
|
|
|
+ })
|
|
|
+ recorderManager.onStart(() => {
|
|
|
+ var taskContent = that.data.taskContent;
|
|
|
+ taskContent.showImg = taskContent.luyinzhongImg;
|
|
|
+ taskContent.taskRadioType = '2';
|
|
|
+ that.setData({
|
|
|
+ taskContent: taskContent
|
|
|
+ })
|
|
|
+ })
|
|
|
+ recorderManager.onPause(() => {
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ recorderManager.onStop((res) => {
|
|
|
+ var path = res.tempFilePath;
|
|
|
+ var task = that.data.taskContent;
|
|
|
+ task.taskRadioType = '3';
|
|
|
+ task.showImg = task.playImg;
|
|
|
+ task.second = Math.ceil(res.duration / 1000);
|
|
|
+ that.setData({
|
|
|
+ voices: path,
|
|
|
+ taskContent: task
|
|
|
+ });
|
|
|
+ // const { tempFilePath } = res
|
|
|
+ })
|
|
|
+ recorderManager.onError((res) => {
|
|
|
+ wx.showToast({
|
|
|
+ title: '录音失败',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ var task = that.data.taskContent;
|
|
|
+ task.taskRadioType = '1';
|
|
|
+ task.showImg = task.readingImg;
|
|
|
+ that.setData({
|
|
|
+ voices: '',
|
|
|
+ taskContent: task
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.getUserInfo();
|
|
|
+ },
|
|
|
+ gotopage: function(e){
|
|
|
+ var url = e.currentTarget.dataset.url;
|
|
|
+ var type = e.currentTarget.dataset.type;
|
|
|
+ var title = e.currentTarget.dataset.title;
|
|
|
+ app.gotopage(url, { title: title, type: type });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面显示
|
|
|
+ */
|
|
|
+ onShow: function () {
|
|
|
+ var arr = [];
|
|
|
+ var that = this;
|
|
|
+ app.ajaxReadyCallback = res => {
|
|
|
+ var apiname = res.data.apiname;
|
|
|
+ if(apiname == 'wyConfig'){
|
|
|
+ console.log(res);
|
|
|
+ that.setData({
|
|
|
+ wyPhone:res.data.data.orgPhone
|
|
|
+ })
|
|
|
+ }else if(apiname == 'addorder') {
|
|
|
+ wx.showToast({
|
|
|
+ title: '提交成功!',
|
|
|
+ icon: 'success',
|
|
|
+ duration: 1500
|
|
|
+ });
|
|
|
+
|
|
|
+ setTimeout(function () {
|
|
|
+ wx.navigateBack({ delta: 1 });
|
|
|
+ }, 1500);
|
|
|
+ }else if(apiname == 'userInfo') {
|
|
|
+ that.setData({
|
|
|
+ depId:res.data.data.depId,
|
|
|
+ depName:res.data.data.depName,
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.wyConfig();
|
|
|
+ },
|
|
|
+
|
|
|
+ checkboxChange: function(e){
|
|
|
+ var data = e.detail.value;
|
|
|
+ if(data.length >0){
|
|
|
+ this.setData({
|
|
|
+ isHide:1
|
|
|
+ })
|
|
|
+ }else {
|
|
|
+ this.setData({
|
|
|
+ isHide:0
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ callPhone(){
|
|
|
+ var that = this;
|
|
|
+ wx.makePhoneCall({
|
|
|
+ phoneNumber: that.data.wyPhone,
|
|
|
+ })
|
|
|
+ },
|
|
|
+ wyConfig(){
|
|
|
+ app.ajax({
|
|
|
+ url: app.globalData.serverUrl + '/org/queryConfig',
|
|
|
+ type: 'POST',
|
|
|
+ apiname: 'wyConfig',
|
|
|
+ data: {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ btnsubmit(){
|
|
|
+ var that = this;
|
|
|
+ if(!this.data.content){
|
|
|
+ wx.showToast({
|
|
|
+ title: '请输入内容',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+ if(this.data.depId==0){
|
|
|
+ wx.showToast({
|
|
|
+ title: '请选择部门',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+
|
|
|
+ //数据初始化
|
|
|
+ files = [];
|
|
|
+ filescount = 0;
|
|
|
+ uploadFlag = 0;
|
|
|
+ filesindex = 0;
|
|
|
+ var formdata = {
|
|
|
+ images: this.data.images,
|
|
|
+ voices: this.data.voices?[this.data.voices]:[],
|
|
|
+ videos: this.data.videos,
|
|
|
+ }
|
|
|
+ if (formdata.voices.length > 0) {
|
|
|
+ for (var i in formdata.voices){
|
|
|
+ var file = {
|
|
|
+ path: formdata.voices[i],
|
|
|
+ type: 'voice'
|
|
|
+ }
|
|
|
+ files.push(file);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (formdata.images.length > 0) {
|
|
|
+ for (var i in formdata.images) {
|
|
|
+ var file = {
|
|
|
+ path: formdata.images[i],
|
|
|
+ type: 'image'
|
|
|
+ }
|
|
|
+ files.push(file);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (formdata.videos.length > 0) {
|
|
|
+ for (var i in formdata.videos) {
|
|
|
+ var file = {
|
|
|
+ path: formdata.videos[i],
|
|
|
+ type: 'video'
|
|
|
+ }
|
|
|
+ files.push(file);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //上传文件
|
|
|
+ if(files.length > 0){
|
|
|
+ filescount = files.length;
|
|
|
+ wx.showLoading({
|
|
|
+ title: '提交中',
|
|
|
+ mask: true
|
|
|
+ });
|
|
|
+ this.uploadFiles();
|
|
|
+ }else{
|
|
|
+ this.addorder();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ addorder: function(){
|
|
|
+ var that = this;
|
|
|
+ var form = that.data.form;
|
|
|
+ var formimages = '';
|
|
|
+ if (form.images.length > 0) {
|
|
|
+ formimages = form.images.join(",");
|
|
|
+ }
|
|
|
+ var formvoices = '';
|
|
|
+ if (form.voices.length > 0) {
|
|
|
+ formvoices = form.voices.join(",");
|
|
|
+ }
|
|
|
+ var formvideos = '';
|
|
|
+ if (form.videos.length > 0) {
|
|
|
+ formvideos = form.videos.join(",");
|
|
|
+ }
|
|
|
+ var m = this.data.mode;
|
|
|
+ if(this.data.mode===1){
|
|
|
+ var m = 2;
|
|
|
+ }
|
|
|
+ if(this.data.mode===2){
|
|
|
+ var m = 1;
|
|
|
+ }
|
|
|
+ app.ajax({
|
|
|
+ url: app.globalData.serverUrl + '/Complain/add',
|
|
|
+ type: 'POST',
|
|
|
+ apiname:'addorder',
|
|
|
+ data: {
|
|
|
+ depId: that.data.depId,
|
|
|
+ content: that.data.content,
|
|
|
+ images: formimages,
|
|
|
+ voices: formvoices,
|
|
|
+ videos: formvideos,
|
|
|
+ hide:that.data.isHide,
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ contentChange(e){
|
|
|
+ this.setData({
|
|
|
+ content: e.detail.value
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onTouchstartRadio: function(event) {
|
|
|
+ var radioType = this.data.taskContent.taskRadioType;
|
|
|
+ if (radioType == 1) {
|
|
|
+ //开始录音
|
|
|
+ var options = {
|
|
|
+ duration: 15000,
|
|
|
+ sampleRate: 44100,
|
|
|
+ numberOfChannels: 1,
|
|
|
+ encodeBitRate: 192000,
|
|
|
+ format: 'mp3',
|
|
|
+ frameSize: 50
|
|
|
+ }
|
|
|
+ recorderManager.start(options);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ onTouchendRadio: function(event) {
|
|
|
+ var radioType = this.data.taskContent.taskRadioType;
|
|
|
+ var that = this;
|
|
|
+ if (radioType == 2) {
|
|
|
+ recorderManager.stop();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //播放录音
|
|
|
+ playRadio: function(event) {
|
|
|
+ var taskContent = this.data.taskContent;
|
|
|
+ var radioType = taskContent.taskRadioType;
|
|
|
+ if (radioType == 3) {
|
|
|
+ var radioUrl = this.data.voices;
|
|
|
+ innerAudioContext.src = radioUrl;
|
|
|
+ innerAudioContext.play();
|
|
|
+ innerAudioContext.onPlay(() => {
|
|
|
+ taskContent.taskRadioType = 4;
|
|
|
+ taskContent.showImg = taskContent.stopPlayImg;
|
|
|
+ this.setData({
|
|
|
+ taskContent: taskContent
|
|
|
+ })
|
|
|
+ });
|
|
|
+ innerAudioContext.onError((res) => {
|
|
|
+ // console.log(res)
|
|
|
+ });
|
|
|
+ //监听音频自然播放至结束的事件
|
|
|
+ innerAudioContext.onEnded((res) => {
|
|
|
+ taskContent.taskRadioType = 3;
|
|
|
+ taskContent.showImg = taskContent.playImg;
|
|
|
+ this.setData({
|
|
|
+ taskContent: taskContent
|
|
|
+ })
|
|
|
+ });
|
|
|
+ } else if (radioType == 4) {
|
|
|
+ innerAudioContext.stop();
|
|
|
+ //监听音频停止事件
|
|
|
+ innerAudioContext.onStop((res) => {
|
|
|
+ taskContent.taskRadioType = 3;
|
|
|
+ taskContent.showImg = taskContent.playImg;
|
|
|
+ this.setData({
|
|
|
+ taskContent: taskContent
|
|
|
+ })
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ delfile: function(e){
|
|
|
+ var type = e.currentTarget.dataset.type;
|
|
|
+ var path = e.currentTarget.dataset.path;
|
|
|
+ if(type == 'image'){
|
|
|
+ var imgs = this.data.images;
|
|
|
+ var newsimgs = [];
|
|
|
+ for(var i in imgs){
|
|
|
+ if (imgs[i] == path){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ newsimgs.push(imgs[i]);
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ images: newsimgs
|
|
|
+ });
|
|
|
+ this.checkfiles();
|
|
|
+ }else if(type == 'video'){
|
|
|
+ var videos = this.data.videos;
|
|
|
+ var newvideos = [];
|
|
|
+ for (var i in videos) {
|
|
|
+ if (videos[i] == path) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ newvideos.push(videos[i]);
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ videos: newvideos
|
|
|
+ });
|
|
|
+ this.checkfiles();
|
|
|
+ }else{
|
|
|
+ var task = this.data.taskContent;
|
|
|
+ task.showImg = task.readingImg;
|
|
|
+ task.taskRadioType = '1';
|
|
|
+ this.setData({
|
|
|
+ voices: '',
|
|
|
+ taskContent: task
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ choosefile : function(){
|
|
|
+ let that = this;
|
|
|
+ wx.showActionSheet({
|
|
|
+ itemList: ['选择图片','选择视频'],
|
|
|
+ success(res) {
|
|
|
+ if (res.tapIndex == 0){
|
|
|
+ if (that.data.images.length >= 3){
|
|
|
+ wx.showToast({
|
|
|
+ title: '图片最多只能上传3张',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ that.chooseImg();
|
|
|
+ }
|
|
|
+ } else if (res.tapIndex == 1){
|
|
|
+ if (that.data.videos.length >= 1) {
|
|
|
+ wx.showToast({
|
|
|
+ title: '视频最多只能上传1个',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.chooseVideo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail(res) {
|
|
|
+ // console.log('fail')
|
|
|
+ },
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ chooseImg: function(){
|
|
|
+ var imgs = this.data.images;
|
|
|
+ var that = this;
|
|
|
+ var count = 3 - imgs.length;
|
|
|
+ wx.chooseImage({
|
|
|
+ count: count,
|
|
|
+ sizeType: ['compressed'],
|
|
|
+ sourceType: ['album', 'camera'],
|
|
|
+ success(res) {
|
|
|
+ var files = res.tempFilePaths;
|
|
|
+ imgs = imgs.concat(files);
|
|
|
+ that.setData({
|
|
|
+ images: imgs
|
|
|
+ });
|
|
|
+ that.checkfiles();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ checkfiles: function(){
|
|
|
+ if (this.data.videos.length >= 1 && this.data.images.length >= 3) {
|
|
|
+ this.setData({
|
|
|
+ choosefinish: true,
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.setData({
|
|
|
+ choosefinish: false,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (this.data.videos.length >= 1 || this.data.images.length >= 1){
|
|
|
+ this.setData({
|
|
|
+ choosefinishline: true
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.setData({
|
|
|
+ choosefinishline: false
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ chooseVideo: function () {
|
|
|
+ var that = this;
|
|
|
+ let maxDuration = 15;
|
|
|
+ wx.chooseVideo({
|
|
|
+ sourceType: ['album', 'camera'],
|
|
|
+ compressed: true,
|
|
|
+ maxDuration: maxDuration,
|
|
|
+ camera: 'back',
|
|
|
+ success(res) {
|
|
|
+ if (res.duration > maxDuration){
|
|
|
+ wx.showToast({
|
|
|
+ title: '视频时长不能超过' + maxDuration +'秒',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ let videos = [];
|
|
|
+ videos.push(res.tempFilePath);
|
|
|
+ that.setData({
|
|
|
+ videos: videos
|
|
|
+ });
|
|
|
+ that.checkfiles();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ uploadFiles: function(){
|
|
|
+ var that = this;
|
|
|
+ if (files.length > 0){
|
|
|
+ wx.uploadFile({
|
|
|
+ url: app.globalData.uploadServerUrl + 'upload/upfile',
|
|
|
+ filePath: files[filesindex].path,
|
|
|
+ name: 'uploadFile',
|
|
|
+ formData: {
|
|
|
+ // 'ttype': mode,
|
|
|
+ // 'orgId': orgId
|
|
|
+ },
|
|
|
+ success(res) {
|
|
|
+ var data =JSON.parse(res.data);
|
|
|
+ if (data.code != 0) {
|
|
|
+ wx.hideLoading();
|
|
|
+ wx.showToast({
|
|
|
+ title: '文件上传失败1',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ that.setData({
|
|
|
+ form:{
|
|
|
+ images:[],
|
|
|
+ voices:[],
|
|
|
+ videos:[]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return false;
|
|
|
+ }else{
|
|
|
+ var form = that.data.form;
|
|
|
+ if (files[filesindex].type == 'image'){
|
|
|
+ form.images.push(data.data.path);
|
|
|
+ } else if (files[filesindex].type == 'video'){
|
|
|
+ form.videos.push(data.data.path);
|
|
|
+ }else{
|
|
|
+ form.voices.push(data.data.path);
|
|
|
+ }
|
|
|
+ filescount--;
|
|
|
+ if(filescount == 0){ //提交表单
|
|
|
+ that.addorder();
|
|
|
+ }else{ //继续上传
|
|
|
+ filesindex++;
|
|
|
+ that.uploadFiles();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail(res){
|
|
|
+ wx.hideLoading();
|
|
|
+ wx.showToast({
|
|
|
+ title: '文件上传失败',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ that.setData({
|
|
|
+ form: {
|
|
|
+ images: [],
|
|
|
+ voices: [],
|
|
|
+ videos: []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getUserInfo(){
|
|
|
+ app.ajax({
|
|
|
+ url: app.globalData.serverUrl + '/User/info',
|
|
|
+ type: 'POST',
|
|
|
+ apiname:'userInfo',
|
|
|
+ data: {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+})
|