add.js 18 KB

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