add.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687
  1. import common from '../../utils/util';
  2. import main from '../../utils/main';
  3. const app = getApp();
  4. var field = [[], [], [], []];
  5. var arrTag = [];
  6. var tempCursor = 0,
  7. btnName = "";
  8. var arrSoundMark = [];
  9. var isUnload = true;
  10. var isEdit = true;
  11. Page({
  12. data: {
  13. PracticeTimeStr:"智能安排",
  14. HiddenFieldEdit:true,
  15. FieldContent: "",
  16. SoundSign: "[读]",
  17. LineSign: "[线]",
  18. IsTodayStudy:false,
  19. BtnArray: ["+", "-", "×", "÷", "=", "<", ">"],
  20. },
  21. onLoad: function (options) {
  22. wx.hideShareMenu();
  23. var that = this;
  24. var type2=0;
  25. if (options.type2)
  26. type2=options.type2;
  27. var fieldNumber=0;
  28. if (options.fieldid)
  29. fieldNumber=options.fieldid;
  30. that.setData({
  31. Containnerheight: main.getWindowHeight(),
  32. UpdateType: options.type,
  33. ShowType:type2,
  34. MiaoguoCardID: options.id,
  35. FieldNumber:fieldNumber,
  36. });
  37. var list = app.globalData.CardList;
  38. for (var i = 0; i < list.length; i++) {
  39. if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  40. wx.setStorageSync("TempCardInfo", list[i]);
  41. break;
  42. }
  43. }
  44. app.globalData.TempFieldNumber=0;
  45. app.globalData.TempMiaoguoCardID=that.data.MiaoguoCardID;
  46. },
  47. onShow: function () {
  48. var that = this;
  49. if (that.data.UpdateType == "add") {
  50. that.initAddCard();
  51. }
  52. else {
  53. var card = {},content="";
  54. var list = app.globalData.CardList;
  55. for (var i = 0; i < list.length; i++) {
  56. if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  57. card = main.changeStringToView(list[i].Content);
  58. card.MiaoguoCardID = list[i].MiaoguoCardID;
  59. card.LimitTime = list[i].LimitTime;
  60. if (that.data.FieldNumber && that.data.FieldNumber>0)
  61. content = main.encryptUrl(list[i].Content[that.data.FieldNumber].Content);
  62. break;
  63. }
  64. }
  65. that.setData({
  66. MiaoguoCardID: card.MiaoguoCardID,
  67. Field: card.Field,
  68. Tags: card.Tags,
  69. FieldContent:content,
  70. });
  71. if (that.data.UpdateType != "add2") {
  72. wx.setNavigationBarTitle({
  73. title: '编辑题卡'
  74. });
  75. }
  76. if (that.data.UpdateType == "edit3") {
  77. that.gotoAddItem({ currentTarget: { dataset: { fieldid: that.data.FieldNumber}}});
  78. }
  79. }
  80. },
  81. onUnload: function () {
  82. field = [[], [], [], []];
  83. var card = wx.getStorageSync("TempCardInfo");
  84. if (card) {
  85. var list = app.globalData.CardList;
  86. for (var i = 0; i < list.length; i++) {
  87. if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  88. list[i] = card;
  89. break;
  90. }
  91. }
  92. app.globalData.CardList=list;
  93. wx.removeStorageSync("TempCardInfo");
  94. }
  95. wx.removeStorageSync("TempCardInfoAddItem");
  96. },
  97. onClose: function () {
  98. wx.navigateBack({
  99. delta: 1,
  100. });
  101. },
  102. gotoAddItem: function (e) {
  103. var that=this;
  104. var fieldid = e.currentTarget.dataset.fieldid;
  105. var content;
  106. var list = app.globalData.CardList;
  107. for (var i = 0; i < list.length; i++) {
  108. if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  109. content = main.encryptUrl(list[i].Content[fieldid].Content);
  110. break;
  111. }
  112. }
  113. wx.setStorageSync("TempCardInfoAddItem", content);
  114. that.setData({
  115. HiddenFieldEdit: false,
  116. Focus: true,
  117. FieldNumber: fieldid,
  118. FieldContent:content,
  119. });
  120. wx.setNavigationBarTitle({
  121. title: '编辑 段落' + fieldid,
  122. });
  123. },
  124. onSearch: function (e) {
  125. app.globalData.TempFieldNumber = 0;
  126. wx.navigateTo({
  127. url: './searchWeb',
  128. })
  129. },
  130. onPreview: function (e) {
  131. var that = this;
  132. if (that.data.Field[1] == "") {
  133. wx.showToast({
  134. title: '第一段必填',
  135. image: "../images/universalpic_wrong_white_120x120.png",
  136. });
  137. }
  138. else {
  139. wx.navigateTo({
  140. url: './preview?type=preview&id=' + this.data.MiaoguoCardID,
  141. });
  142. }
  143. },
  144. switch1Change(e) {
  145. var str="智能安排";
  146. if (e.detail.value){
  147. str="今日必练";
  148. }
  149. this.setData({
  150. IsTodayStudy: e.detail.value,
  151. });
  152. },
  153. saveCard: function () {
  154. var that = this;
  155. if (that.data.Field[1] == "") {
  156. wx.showToast({
  157. title: '第一段必填',
  158. image: "../images/universalpic_wrong_white_120x120.png",
  159. });
  160. }
  161. else {
  162. that.uploadImageAll(that.data.Field, function (field) {
  163. that.data.Field=field;
  164. var userid = app.globalData.userInfo.UserID;
  165. var isTodayStudy = 0;
  166. if (that.data.IsTodayStudy && that.data.UpdateType == "add2")
  167. isTodayStudy = 1;
  168. var tags = [];
  169. for (var i = 0; i < that.data.Tags.length; i++) {
  170. if (that.data.Tags[i])
  171. tags.push(that.data.Tags[i]);
  172. }
  173. var param1 = {
  174. Tags: tags,
  175. Field1: "",
  176. Field2: "",
  177. Field3: "",
  178. IsTodayStudy: isTodayStudy,
  179. ID: that.data.MiaoguoCardID,
  180. };
  181. for (var i = 1; i <= 3; i++) {
  182. for (var key in that.data.Field[i]) {
  183. var item = that.data.Field[i][key];
  184. var str = "";
  185. if (item.Type == "image") {
  186. str = "[图 w='"+item.Width+"' h='"+item.Height+"']" + item.Content + "[/图]";
  187. }
  188. else if (item.Type == "line") {
  189. for (var j = 0; j < item.Content.length; j++) {
  190. if (item.Content[j].key == "normal")
  191. str += item.Content[j].value;
  192. if (item.Content[j].key == "line") {
  193. str += "[线]" + item.Content[j].value + "[/线]";
  194. }
  195. }
  196. }
  197. else if (item.Type == "sound") {
  198. if (item.SoundMark)
  199. str = "[读 src='" + item.SoundMark + "']" + item.Content + "[/读]";
  200. else
  201. str = "[读]" + item.Content + "[/读]";
  202. }
  203. else if (item.Type == "normal") {
  204. str = item.Content;
  205. }
  206. else if (item.Type == "return") {
  207. str = "\n";
  208. }
  209. param1["Field" + i] += str;
  210. }
  211. param1["Field" + i] = main.changeViewToString(param1["Field" + i]);
  212. }
  213. that.saveLocalCardList(param1);
  214. // var param2 = {
  215. // param: common.Encrypt(JSON.stringify(param1))
  216. // }
  217. main.postData('AddMiaoguoCard?Type=' + that.data.UpdateType + '&UserID=' + userid, param1, function (data) {
  218. if (that.data.UpdateType == "edit" || that.data.UpdateType == "edit2" || that.data.UpdateType == "edit3") {
  219. that.onClose();
  220. }
  221. else {
  222. wx.showToast({
  223. title: '已保存!',
  224. image: "../images/universalpic_saved_white_120x120.png",
  225. });
  226. if (that.data.UpdateType == "add2") {
  227. that.initAddCard();
  228. }
  229. var taskToday = app.globalData.TaskToday;
  230. taskToday.CardNumber++;
  231. app.globalData.TaskToday=taskToday;
  232. }
  233. wx.removeStorageSync("TempCardInfo");
  234. });
  235. });
  236. }
  237. },
  238. uploadImageAll: function (arr, callback) {
  239. var that=this;
  240. var arrSource=[], arrResult=[];
  241. for(var i=0;i<arr.length;i++){
  242. for(var j=0;j<arr[i].length;j++){
  243. if (arr[i][j].Type == "image" && arr[i][j].Content){
  244. arrSource.push(arr[i][j].Content);
  245. if (arr[i][j].ContentServer.indexOf(app.globalData.uploadImageUrl)>=0
  246. || arr[i][j].ContentServer.indexOf("baidu.com")>=0 ){
  247. arrResult.push(arr[i][j].ContentServer);
  248. }
  249. else{
  250. that.uploadImage(arr[i][j].Content, function (data) {
  251. //console.log("Target:"+data);
  252. data = app.globalData.uploadImageUrl + data;
  253. arrResult.push(data);
  254. });
  255. }
  256. }
  257. }
  258. }
  259. var interval=setInterval(function(){
  260. //console.log(arrResult.length);
  261. if (arrResult.length >= arrSource.length){
  262. clearInterval(interval);
  263. var ari=0;
  264. for (var i = 0; i < arr.length; i++) {
  265. for (var j = 0; j < arr[i].length; j++) {
  266. if (arr[i][j].Type == "image" && arr[i][j].Content) {
  267. var tempUrl = arr[i][j].Content;
  268. var serverUrl = arrResult[ari++];
  269. main.saveTempImage(serverUrl, tempUrl);
  270. arr[i][j].Content = serverUrl;
  271. arr[i][j].ContentServer = serverUrl;
  272. }
  273. }
  274. }
  275. //console.log(JSON.stringify(arr));
  276. callback(arr);
  277. }
  278. },500);
  279. },
  280. uploadImage:function(file,callback){
  281. var url = common.Encrypt("MiaoguoUploadFile");
  282. wx.uploadFile({
  283. url: app.globalData.serverUrl + url,
  284. filePath: file,
  285. name: 'file',
  286. success(res) {
  287. wx.hideLoading();
  288. callback(res.data);
  289. },
  290. fail: function (err) {
  291. wx.hideLoading();
  292. wx.showModal({
  293. title: '上传图片失败',
  294. showCancel: false,
  295. content: JSON.stringify(err),
  296. });
  297. }
  298. });
  299. },
  300. saveLocalCardList:function(param1){
  301. var that=this;
  302. var list = app.globalData.CardList;
  303. for (var i = 0; i < list.length; i++) {
  304. if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  305. for (var j = 0; j < 4; j++) {
  306. if (j == 0){
  307. if (param1.tags && param1.tags.length > 0)
  308. list[i].Content[j].Content = param1.tags.join(",");
  309. }
  310. else
  311. list[i].Content[j].Content = param1["Field" + j];
  312. }
  313. app.globalData.CardList=list;
  314. break;
  315. }
  316. }
  317. },
  318. initAddCard: function () {
  319. var card = {};
  320. card.MiaoguoCardID = 0;
  321. card.Content = [];
  322. for (var i = 0; i < 4; i++) {
  323. var obj = {};
  324. obj.ContentType = i;
  325. obj.Content = [];
  326. card.Content.push(obj);
  327. }
  328. app.globalData.CardList=[card];
  329. this.setData({
  330. MiaoguoCardID: 0,
  331. Field: [[], [], [], []],
  332. Tags: [],
  333. UpdateType: "add2",
  334. });
  335. },
  336. onBindError: function (e) {
  337. for (var i = 1; i < this.data.Field.length; i++) {
  338. for (var j = 0; j < this.data.Field[i].length; j++) {
  339. if (this.data.Field[i][j].Type == "image") {
  340. this.data.Field[i][j].Url = this.data.Field[i][j].Content;
  341. }
  342. }
  343. }
  344. this.setData({
  345. Field: this.data.Field,
  346. });
  347. },
  348. deleteItem: function (e) {
  349. var that = this;
  350. var index = e.currentTarget.dataset.id;
  351. wx.showModal({
  352. title: '提醒',
  353. content: '记号“'+that.data.Tags[index]+'”要删除吗?',
  354. success(res) {
  355. if (res.confirm) {
  356. that.data.Tags.splice(index, 1);
  357. that.setData({
  358. Tags: that.data.Tags,
  359. });
  360. var list = app.globalData.CardList;
  361. for (var i = 0; i < list.length; i++) {
  362. if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  363. list[i].Content[0].Content = that.data.Tags;
  364. break;
  365. }
  366. }
  367. app.globalData.CardList = list;
  368. }
  369. }
  370. });
  371. },
  372. onGotoList:function(){
  373. var that = this;
  374. if (that.data.Field[1] != "" && that.data.Field[2] != "" && that.data.Field[2] != "") {
  375. wx.showModal({
  376. title: '尚未保存',
  377. content: '即将前往“全部题卡”,但当前题卡尚未保存,按继续将放弃保存。',
  378. confirmText:'继续',
  379. success(res) {
  380. if (res.confirm) {
  381. goto();
  382. }
  383. }
  384. });
  385. }
  386. else{
  387. goto();
  388. }
  389. function goto(){
  390. wx.showLoading({
  391. title: '请稍候',
  392. });
  393. setTimeout(function () {
  394. wx.hideLoading();
  395. }, 5000);
  396. var url = 'GetMiaoguoCardList?UserID=' + app.globalData.userInfo.UserID;
  397. main.getData(url, function (data) {
  398. wx.hideLoading();
  399. if (data) {
  400. app.globalData.CardList = data.List;
  401. wx.redirectTo({
  402. url: './searchCardList?type=0&Count=' + data.Count,
  403. })
  404. }
  405. });
  406. }
  407. },
  408. //段落编辑**************************
  409. //字段输入
  410. bindinputField: function (e) {
  411. //console.log("bindinputField:" + e.detail.value + " isEdit:" + isEdit);
  412. var that = this;
  413. if (app.globalData.IsAndroid && !isEdit) {
  414. return;
  415. }
  416. this.setData({
  417. FieldContent: e.detail.value,
  418. });
  419. },
  420. //加符号
  421. addSymbol: function (e) {
  422. //console.log("addSymbol");
  423. isEdit = true;
  424. var that = this;
  425. btnName = e.currentTarget.dataset.id;
  426. if (btnName == "[读]") {
  427. this.setData({
  428. SoundSign: "[/读]",
  429. });
  430. } else if (btnName == "[/读]") {
  431. this.setData({
  432. SoundSign: "[读]",
  433. });
  434. } else if (btnName == "[线]") {
  435. this.setData({
  436. LineSign: "[/线]",
  437. });
  438. } else if (btnName == "[/线]") {
  439. this.setData({
  440. LineSign: "[线]",
  441. });
  442. }
  443. if (!this.data.Focus) {
  444. this.data.FieldContent = this.data.FieldContent + btnName;
  445. this.setData({
  446. FieldContent: this.data.FieldContent,
  447. });
  448. }
  449. //console.log("addSymbol:" + this.data.FieldContent);
  450. setTimeout(function () {
  451. that.setData({
  452. Focus: true,
  453. });
  454. }, 300);
  455. },
  456. //焦点聚焦
  457. onBindFocus: function () {
  458. this.setData({
  459. Focus: true,
  460. });
  461. },
  462. //失焦
  463. onBindblur: function (e) {
  464. var that = this;
  465. //console.log("onBindblur:" + isEdit + " Filed:" + this.data.FieldContent);
  466. if (app.globalData.IsAndroid && !isEdit) {
  467. setTimeout(function () {
  468. isEdit = true;
  469. console.log("onBindblur2:" + isEdit);
  470. }, 500);
  471. return;
  472. }
  473. isEdit = false;
  474. if (app.globalData.IsAndroid && !isEdit) {
  475. setTimeout(function () {
  476. isEdit = true;
  477. console.log("onBindblur2:" + isEdit);
  478. }, 500);
  479. }
  480. //console.log("onBindblur:"+isEdit);
  481. this.updateField();
  482. tempCursor = e.detail.cursor;
  483. //console.log("tempCursor:" + tempCursor);
  484. if (tempCursor == undefined)
  485. tempCursor = this.data["FieldContent"].length;
  486. var str1 = "",
  487. str2 = "";
  488. if (this.data.FieldContent.length > 0) {
  489. str1 = this.data.FieldContent.substr(0, tempCursor);
  490. str2 = this.data.FieldContent.substring(tempCursor, this.data.FieldContent.length);
  491. }
  492. //console.log("str1:" + str1);
  493. //console.log("str2:" + str2);
  494. var cur = 1;
  495. if (btnName == "[读]" || btnName == "[线]") {
  496. cur = 3;
  497. } else if (btnName == "[/读]" || btnName == "[/线]") {
  498. cur = 4;
  499. } else if (btnName == "(   )") {
  500. cur = 5;
  501. } else if (btnName == "_____") {
  502. cur = 5;
  503. }
  504. this.data.FieldContent = str1 + btnName + str2;
  505. this.setData({
  506. FieldContent: this.data.FieldContent,
  507. Focus: false,
  508. Cursor: tempCursor + cur,
  509. });
  510. btnName = "";
  511. },
  512. onSearchField: function (e) {
  513. app.globalData.TempFieldNumber = this.data.FieldNumber;
  514. wx.navigateTo({
  515. url: './searchWeb',
  516. });
  517. this.updateField();
  518. setTimeout(function () {
  519. isEdit = true;
  520. //console.log("onSearchEnd");
  521. }, 1000);
  522. },
  523. clear: function () {
  524. var that = this;
  525. //console.log("clear");
  526. this.setData({
  527. FieldContent: "",
  528. Focus: true,
  529. Cursor: 0,
  530. });
  531. btnName = "";
  532. isEdit = false;
  533. this.updateField();
  534. },
  535. closeAddItem: function (e) {
  536. var that=this;
  537. var isSave = e.currentTarget.dataset.idsave;
  538. if (isSave == "true") {
  539. isUnload = false;
  540. this.updateField();
  541. }
  542. else if (isSave == "false") {
  543. var content = wx.getStorageSync("TempCardInfoAddItem");
  544. this.setData({
  545. FieldContent:content,
  546. })
  547. this.updateField();
  548. }
  549. this.setData({
  550. HiddenFieldEdit:true,
  551. });
  552. var title = "编辑题卡";
  553. if (that.data.UpdateType == "add2") {
  554. title = "添加题卡";
  555. }
  556. wx.setNavigationBarTitle({
  557. title: title,
  558. });
  559. },
  560. updateField: function () {
  561. var str = this.data.FieldContent;
  562. var list = app.globalData.CardList;
  563. var card={};
  564. for (var i = 0; i < list.length; i++) {
  565. if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
  566. list[i].Content[this.data.FieldNumber].Content = str;
  567. card = main.changeStringToView(list[i].Content);
  568. break;
  569. }
  570. }
  571. app.globalData.CardList = list;
  572. this.setData({
  573. Field: card.Field,
  574. Tags: card.Tags,
  575. });
  576. },
  577. uploadImageField: function () {
  578. //console.log("uploadImageStart");
  579. var that = this;
  580. wx.chooseImage({
  581. count: 1,
  582. sizeType: ['compressed'],
  583. sourceType: ['album', 'camera'],
  584. success(res) {
  585. // tempFilePath可以作为img标签的src属性显示图片
  586. const tempFilePaths = res.tempFilePaths;
  587. //console.log(tempFilePaths[0]);
  588. //that.data.FieldContent = that.data.FieldContent + "[图 url='" + tempFilePaths[0] + "']" + tempFilePaths[0] + "[/图]";
  589. wx.getImageInfo({
  590. src: res.tempFilePaths[0],
  591. success(res) {
  592. console.log(res.width)
  593. console.log(res.height)
  594. if (tempCursor == undefined)
  595. tempCursor = that.data.FieldContent.length;
  596. var str1 = "",
  597. str2 = "";
  598. if (that.data.FieldContent.length > 0) {
  599. str1 = that.data.FieldContent.substr(0, tempCursor);
  600. str2 = that.data.FieldContent.substring(tempCursor, that.data.FieldContent.length);
  601. }
  602. var str0 = "[图 w='"+res.width+"' h='"+res.height+"']" + tempFilePaths[0]+ "[/图]";
  603. that.data.FieldContent = str1 + str0 + str2;
  604. //console.log("uploadImageEnd:" + that.data.FieldContent);
  605. that.setData({
  606. FieldContent: that.data.FieldContent,
  607. Focus: false,
  608. });
  609. that.updateField();
  610. }
  611. });
  612. },
  613. fail: function () {
  614. }
  615. });
  616. },
  617. onShareAppMessage: function () {
  618. return {
  619. title: app.globalData.ShareTitle,
  620. path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID,
  621. imageUrl: app.globalData.ShareImage,
  622. }
  623. },
  624. })