import common from '../../utils/util'; import main from '../../utils/main'; const app = getApp(); var arrTag = []; var tempCursor = undefined, btnName = ""; var arrSoundMark = []; var isUnload = true; var isEdit = true; var isSave = true; var interval; var timeoutUploadImage = 0; Page({ data: { PracticeTimeStr: "智能安排", HiddenFieldEdit: true, FieldContent: "", SoundSign: "[读]", LineSign: "[线]", IsTodayStudy: false, BtnArray: ["+", "-", "×", "÷", "=", "<", ">"], }, onLoad: function (options) { var that = this; var fieldNumber = 0; if (options.fieldid) fieldNumber = options.fieldid; that.setData({ Containnerheight: main.getWindowHeight(), UpdateType: options.type, MiaoguoCardID: options.id, FieldNumber: fieldNumber, }); var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) { wx.setStorageSync("TempCardInfo", list[i]); break; } } app.globalData.TempFieldNumber = 0; app.globalData.TempMiaoguoCardID = that.data.MiaoguoCardID; }, onShow: function () { var that = this; if (that.data.UpdateType == "add") { that.initAddCard(); } else { var card = {}, content = ""; var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) { card = main.changeStringToView(list[i].Content); card.MiaoguoCardID = list[i].MiaoguoCardID; card.LimitTime = list[i].LimitTime; if (that.data.FieldNumber && that.data.FieldNumber > 0) content = main.encryptUrl(list[i].Content[that.data.FieldNumber].Content); break; } } that.setData({ MiaoguoCardID: card.MiaoguoCardID, Field: card.Field, Tags: card.Tags, FieldContent: content, }); if (that.data.UpdateType != "add2") { wx.setNavigationBarTitle({ title: '编辑题卡' }); } if (that.data.UpdateType == "edit3") { that.gotoAddItem({ currentTarget: { dataset: { fieldid: that.data.FieldNumber } } }); } } }, onHide: function () { //用于恢复未保存的新题卡 console.log("onHide"); var that = this; if (!that.data.HiddenFieldEdit) { that.updateField(); } if (!(that.data && that.data.Field && that.data.Field[1].length == 0 && that.data.Field[2].length == 0 && that.data.Field[3].length == 0)) { if (that.data.UpdateType == "add" || that.data.UpdateType == "add2") { var card = {}; card.MiaoguoCardID = that.data.MiaoguoCardID; card.Content = []; var param1 = {}; param1 = that.formatField(that.data.Field); for (var i = 0; i < 4; i++) { var obj = {}; obj.ContentType = i; if (i == 0) obj.Content = that.data.Tags; else obj.Content = param1["Field" + i]; card.Content.push(obj); } wx.setStorageSync("TempCardNoSaved", card); } } }, onUnload: function () { this.onHide(); var card = wx.getStorageSync("TempCardInfo"); if (card) { var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) { list[i] = card; break; } } app.globalData.CardList = list; wx.removeStorageSync("TempCardInfo"); } clearInterval(interval); clearTimeout(timeoutUploadImage); }, onClose: function () { wx.navigateBack({ delta: 1, }); }, gotoAddItem: function (e) { var that = this; var fieldid = e.currentTarget.dataset.fieldid; var content; var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) { content = main.encryptUrl(list[i].Content[fieldid].Content); break; } } wx.setStorageSync("TempCardInfoAddItem", content); that.setData({ HiddenFieldEdit: false, Focus: true, FieldNumber: fieldid, FieldContent: content, }); wx.setNavigationBarTitle({ title: '编辑 段落' + fieldid, }); }, onSearch: function (e) { app.globalData.TempFieldNumber = 0; wx.navigateTo({ url: './searchWeb', }) }, onPreview: function (e) { var that = this; if (that.data.Field[1] == "") { wx.showToast({ title: '第一段必填', image: "../images/universalpic_wrong_white_120x120.png", }); } else { wx.navigateTo({ url: './preview?type=preview&id=' + this.data.MiaoguoCardID, }); } }, switch1Change(e) { var str = "智能安排"; if (e.detail.value) { str = "今日必练"; } this.setData({ IsTodayStudy: e.detail.value, }); }, saveCard: function () { var that = this; if (that.data.Field[1] == "") { wx.showToast({ title: '第一段必填', image: "../images/universalpic_wrong_white_120x120.png", }); } else { if (isSave) { isSave = false; setTimeout(function () { isSave = true; }, 5000); if (that.checkImageCount(that.data.Field)){ that.uploadImageAll(that.data.Field, function (success, field) { if (success) { that.data.Field = field; var userid = app.globalData.userInfo.UserID; var isTodayStudy = 0; if (that.data.IsTodayStudy && that.data.UpdateType == "add2") isTodayStudy = 1; var tags = []; for (var i = 0; i < that.data.Tags.length; i++) { if (that.data.Tags[i]) tags.push(that.data.Tags[i]); } var param1 = {}; param1 = that.formatField(that.data.Field); param1.Tags = tags; param1.IsTodayStudy = isTodayStudy; param1.ID = that.data.MiaoguoCardID; that.saveLocalCardList(param1); wx.hideLoading(); wx.showLoading({ title: '保存数据请稍候', mask: true, }); timeoutUploadImage = setTimeout(function () { wx.hideLoading(); }, 15000); main.postData('AddMiaoguoCard?Type=' + that.data.UpdateType + '&UserID=' + userid, param1, function (data) { wx.removeStorageSync("TempCardNoSaved"); if (that.data.UpdateType == "edit" || that.data.UpdateType == "edit2" || that.data.UpdateType == "edit3") { that.onClose(); } else { wx.hideLoading(); wx.showToast({ title: '已保存!', image: "../images/universalpic_saved_white_120x120.png", }); if (that.data.UpdateType == "add2") { that.initAddCard(); } var taskToday = app.globalData.TaskToday; taskToday.CardNumber++; app.globalData.TaskToday = taskToday; } wx.removeStorageSync("TempCardInfo"); }); } else { wx.showToast({ title: '图片上传失败1', mask: true, }); } }); } } else { wx.showToast({ title: '点击太频繁', mask: true, }); } } }, formatField: function (field) { var result = {}; for (var i = 1; i <= 3; i++) { result["Field" + i] = ""; for (var key in field[i]) { var item = field[i][key]; var str = ""; if (item.Type == "image") { str = "[图 w='" + item.Width + "' h='" + item.Height + "']" + item.Content + "[/图]"; } else if (item.Type == "line") { for (var j = 0; j < item.Content.length; j++) { if (item.Content[j].key == "normal") str += item.Content[j].value; if (item.Content[j].key == "line") { str += "[线]" + item.Content[j].value + "[/线]"; } } } else if (item.Type == "sound") { if (item.SoundMark) str = "[读 src='" + item.SoundMark + "']" + item.Content + "[/读]"; else str = "[读]" + item.Content + "[/读]"; } else if (item.Type == "normal") { str = item.Content; } else if (item.Type == "return") { str = "\n"; } result["Field" + i] += str; } result["Field" + i] = main.changeViewToString(result["Field" + i]); } return result; }, checkImageCount:function(arr){ var count=0; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr[i].length; j++) { if (arr[i][j].Type == "image" && arr[i][j].Content) { count++; } } } if (count>3){ wx.showToast({ title: '只能上传三张图片', }); return false; } else return true; }, uploadImageAll: function (arr, callback) { var that = this; var b = false; var arrSource = [], arrResult = []; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr[i].length; j++) { if (arr[i][j].Type == "image" && arr[i][j].Content) { arrSource.push(arr[i][j].Content); if (arr[i][j].ContentServer.indexOf(app.globalData.uploadImageUrl) >= 0 || arr[i][j].ContentServer.indexOf("baidu.com") >= 0) { var result={}; result.Source = arr[i][j].ContentServer; result.Target = arr[i][j].ContentServer; arrResult.push(result); } else { var source = arr[i][j].Content; that.uploadImage(source, function (data) { if (data){ data=JSON.parse(data); var result=data.result; result.Target = app.globalData.uploadImageUrl + result.Target; arrResult.push(result); } }); } b = true; } } } if (b) { wx.showLoading({ title: '上传图片请稍候', mask: true, }); timeoutUploadImage = setTimeout(function () { wx.hideLoading(); }, 15000); } interval = setInterval(function () { //console.log(arrResult.length); if (arrResult.length >= arrSource.length) { wx.hideLoading(); console.log("arrResult:" + JSON.stringify(arrResult)); clearInterval(interval); var success=true; var ari = 0; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr[i].length; j++) { if (arr[i][j].Type == "image" && arr[i][j].Content) { var tempUrl = arr[i][j].Content; var serverUrl = ""; for(var k=0;k=0){ serverUrl = arrResult[k].Target; break; } } //console.log("serverUrl:" + serverUrl); //console.log("tempUrl:" + tempUrl); main.saveTempImage(serverUrl, tempUrl); arr[i][j].Content = serverUrl; arr[i][j].ContentServer = serverUrl; if (serverUrl==""){ success=false; break; } } } } //console.log(JSON.stringify(arr)); callback(success,arr); } }, 500); }, uploadImage: function (file, callback) { var url = common.Encrypt("MiaoguoUploadFile2"); wx.uploadFile({ url: app.globalData.serverUrl + url, filePath: file, name: 'file', success(res) { callback(res.data); }, fail: function (err) { wx.hideLoading(); wx.showModal({ title: '上传图片失败', showCancel: false, content: JSON.stringify(err), }); } }); }, saveLocalCardList: function (param1) { var that = this; var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) { for (var j = 0; j < 4; j++) { if (j == 0) { if (param1.tags && param1.tags.length > 0) list[i].Content[j].Content = param1.tags.join(","); } else list[i].Content[j].Content = param1["Field" + j]; } app.globalData.CardList = list; break; } } }, initAddCard: function () { var card = {}; card.MiaoguoCardID = 0; card.Content = []; for (var i = 0; i < 4; i++) { var obj = {}; obj.ContentType = i; obj.Content = []; card.Content.push(obj); } app.globalData.CardList = [card]; this.setData({ MiaoguoCardID: 0, Field: [[], [], [], []], Tags: [], UpdateType: "add2", }); }, onBindError: function (e) { for (var i = 1; i < this.data.Field.length; i++) { for (var j = 0; j < this.data.Field[i].length; j++) { if (this.data.Field[i][j].Type == "image") { this.data.Field[i][j].Url = this.data.Field[i][j].Content; } } } this.setData({ Field: this.data.Field, }); }, deleteItem: function (e) { var that = this; var index = e.currentTarget.dataset.id; wx.showModal({ title: '提醒', content: '记号“' + that.data.Tags[index] + '”要删除吗?', success(res) { if (res.confirm) { that.data.Tags.splice(index, 1); that.setData({ Tags: that.data.Tags, }); var list = app.globalData.CardList; for (var i = 0; i < list.length; i++) { if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) { list[i].Content[0].Content = that.data.Tags; break; } } app.globalData.CardList = list; } } }); }, onGotoList: function () { var that = this; if (that.data.Field[1] != "" && that.data.Field[2] != "" && that.data.Field[2] != "") { wx.showModal({ title: '尚未保存', content: '即将前往“全部题卡”,但当前题卡尚未保存,按继续将放弃保存。', confirmText: '继续', success(res) { if (res.confirm) { goto(); } } }); } else { goto(); } function goto() { wx.showLoading({ title: '请稍候', }); setTimeout(function () { wx.hideLoading(); }, 5000); var url = 'GetMiaoguoCardList?UserID=' + app.globalData.userInfo.UserID; main.getData(url, function (data) { wx.hideLoading(); if (data) { app.globalData.CardList = data.List; wx.redirectTo({ url: './searchCardList?type=0&Count=' + data.Count, }) } }); } }, //段落编辑************************** //字段输入 bindinputField: function (e) { //console.log("bindinputField:" + e.detail.value + " isEdit:" + isEdit); var that = this; if (app.globalData.IsAndroid && !isEdit) { return; } this.setData({ FieldContent: e.detail.value, }); }, //加符号 addSymbol: function (e) { //console.log("addSymbol"); isEdit = true; var that = this; btnName = e.currentTarget.dataset.id; if (btnName == "[读]") { this.setData({ SoundSign: "[/读]", }); } else if (btnName == "[/读]") { this.setData({ SoundSign: "[读]", }); } else if (btnName == "[线]") { this.setData({ LineSign: "[/线]", }); } else if (btnName == "[/线]") { this.setData({ LineSign: "[线]", }); } if (!this.data.Focus) { this.data.FieldContent = this.data.FieldContent + btnName; this.setData({ FieldContent: this.data.FieldContent, }); } //console.log("addSymbol:" + this.data.FieldContent); setTimeout(function () { that.setData({ Focus: true, }); }, 300); }, //焦点聚焦 onBindFocus: function () { this.setData({ Focus: true, }); }, //失焦 onBindblur: function (e) { var that = this; //console.log("onBindblur:" + isEdit + " Filed:" + this.data.FieldContent); if (app.globalData.IsAndroid && !isEdit) { setTimeout(function () { isEdit = true; console.log("onBindblur2:" + isEdit); }, 500); return; } isEdit = false; if (app.globalData.IsAndroid && !isEdit) { setTimeout(function () { isEdit = true; console.log("onBindblur2:" + isEdit); }, 500); } //console.log("onBindblur:"+isEdit); this.updateField(); tempCursor = e.detail.cursor; //console.log("tempCursor:" + tempCursor); if (tempCursor == undefined) tempCursor = this.data["FieldContent"].length; var str1 = "", str2 = ""; if (this.data.FieldContent.length > 0) { str1 = this.data.FieldContent.substr(0, tempCursor); str2 = this.data.FieldContent.substring(tempCursor, this.data.FieldContent.length); } //console.log("str1:" + str1); //console.log("str2:" + str2); var cur = 1; if (btnName == "[读]" || btnName == "[线]") { cur = 3; } else if (btnName == "[/读]" || btnName == "[/线]") { cur = 4; } else if (btnName == "(   )") { cur = 5; } else if (btnName == "_____") { cur = 5; } this.data.FieldContent = str1 + btnName + str2; this.setData({ FieldContent: this.data.FieldContent, Focus: false, Cursor: tempCursor + cur, }); btnName = ""; }, onSearchField: function (e) { app.globalData.TempFieldNumber = this.data.FieldNumber; wx.navigateTo({ url: './searchWeb', }); this.updateField(); setTimeout(function () { isEdit = true; //console.log("onSearchEnd"); }, 1000); }, clear: function () { var that = this; //console.log("clear"); this.setData({ FieldContent: "", Focus: true, Cursor: 0, }); btnName = ""; isEdit = false; this.updateField(); }, closeAddItem: function (e) { var that = this; var isSave = e.currentTarget.dataset.idsave; if (isSave == "true") { isUnload = false; this.updateField(); } else if (isSave == "false") { var content = wx.getStorageSync("TempCardInfoAddItem"); this.setData({ FieldContent: content, }) this.updateField(); } this.setData({ HiddenFieldEdit: true, }); var title = "编辑题卡"; if (that.data.UpdateType == "add2") { title = "添加题卡"; } wx.setNavigationBarTitle({ title: title, }); }, updateField: function () { var str = this.data.FieldContent; var list = app.globalData.CardList; var card = {}; for (var i = 0; i < list.length; i++) { if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) { list[i].Content[this.data.FieldNumber].Content = str; card = main.changeStringToView(list[i].Content); break; } } app.globalData.CardList = list; this.setData({ Field: card.Field, Tags: card.Tags, }); }, //选择图片上传 uploadImageField: function () { //console.log("uploadImageStart"); var that = this; //若是安卓机 if (app.globalData.IsAndroid) { selectImage(that); } else{ wx.showActionSheet({ itemList: ['拍照', '从手机相册选择'], success(res) { if (res.tapIndex==0){ wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['camera'], success(res2) { wx.showLoading({ title: '请秒候', mask:true, }); setTimeout(function(){ wx.hideLoading(); selectImage(that); },2000); }, }); } else if (res.tapIndex == 1) { selectImage(that); } }, fail(res) { console.log(res.errMsg) } }); } function selectImage(that){ var sizeType = ['album']; //若是安卓机 if (app.globalData.IsAndroid) sizeType = ['album', 'camera']; wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: sizeType, success(res) { // tempFilePath可以作为img标签的src属性显示图片 const tempFilePaths = res.tempFilePaths; //console.log(tempFilePaths[0]); //that.data.FieldContent = that.data.FieldContent + "[图 url='" + tempFilePaths[0] + "']" + tempFilePaths[0] + "[/图]"; wx.getImageInfo({ src: res.tempFilePaths[0], success(res) { console.log(res.width) console.log(res.height) if (tempCursor == undefined) tempCursor = that.data.FieldContent.length; var str1 = "", str2 = ""; if (that.data.FieldContent.length > 0) { str1 = that.data.FieldContent.substr(0, tempCursor); str2 = that.data.FieldContent.substring(tempCursor, that.data.FieldContent.length); } var width = res.width; if (isNaN(width)) width = 650; var height = res.height; if (isNaN(height)) height = 650; var str0 = "[图 w='" + width + "' h='" + height + "']" + tempFilePaths[0] + "[/图]"; that.data.FieldContent = str1 + str0 + str2; tempCursor = that.data.FieldContent.length; //console.log("uploadImageEnd:" + that.data.FieldContent); that.setData({ FieldContent: that.data.FieldContent, Focus: false, }); that.updateField(); } }); }, fail: function () { } }); } }, onShareAppMessage: function () { return { title: app.globalData.ShareTitle, path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID, imageUrl: app.globalData.ShareImage, } }, })