No Description

chats.js 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. mui.ready(function() {
  2. var obackBtn = document.getElementById("backBtn");//返回按钮
  3. var oconsultTitle = document.getElementById("consultTitle");//咨询标题
  4. var ochatName = document.getElementById("chatName");//与。。聊天
  5. var oconsultCon = document.getElementById("consultCon");//咨询内容
  6. var olookConBtn = document.getElementById("lookConBtn");//查看按钮
  7. var ostatus = document.querySelector('#status');//标记状态,用于返回咨询列表传值
  8. var oconfirm = document.getElementById("confirm");//我的需求,确认完成
  9. var oconfirmBtn = document.getElementById("confirmBtn");//确认完成按钮
  10. var oassessBtn = document.getElementById("assessBtn");//我的需求,去评价按钮
  11. var oassessed = document.getElementById("assessed");//我的需求,已评价(评价星级和评价内容)
  12. var omy_starContainer = document.getElementById("my_starContainer");//我的需求,星级容器
  13. var othat_weiassess = document.getElementById("that_weiassess");//收到咨询,未评价状态
  14. var owaying = document.getElementById("waying");//收到咨询,进行中状态
  15. var othat_assessed = document.getElementById("that_assessed");//收到咨询,对方已评价
  16. var ozixunstarContainer = document.getElementById("consult_starContainer");//收到咨询星级容器
  17. var omyNeeAss = document.getElementById("myNeeAss");//我的需求已评价,点击跳转评价详情
  18. var ogetConAss = document.getElementById("getConAss");//收到咨询对方已评价,点击跳转评价详情
  19. var oselfImg = document.getElementById("selfImg")//自己的头像
  20. var othatImg = document.getElementById("thatImg");//对方头像
  21. var omsg_list = document.getElementById("msg-list");
  22. var omsg_text = document.getElementById("msg-text");
  23. var omsg_type = document.getElementById("msg-type");
  24. var ochatFooter = document.getElementById("chatFooter");
  25. //查看咨询内容
  26. (function lookContultCon(){
  27. var flag = true;
  28. olookConBtn.addEventListener('tap',function(){
  29. if(flag){
  30. this.innerHTML = '收起';
  31. flag = false;
  32. }else {
  33. this.innerHTML = '查看咨询内容';
  34. flag = true;
  35. }
  36. });
  37. })();
  38. function getHeadInfo(manFlag,consultId){
  39. var myData;
  40. if(manFlag == 'myNeed'){//我的需求
  41. //我的需求
  42. mui.ajax(baseUrl+'/ajax/consult/qacon',{
  43. data:{"consultId":consultId,"readStatus":"1"},
  44. dataType:'json',//服务器返回json格式数据
  45. type:'get',//HTTP请求类型
  46. timeout:10000,//超时时间设置为10秒;
  47. success:function(data){
  48. myData = data.data;
  49. ochatName.innerHTML = myData["professor"]["name"];
  50. var consultTitle = '回复:关于'+myData["consultTitle"]+"的咨询";
  51. oconsultTitle.innerHTML = consultTitle;
  52. oconsultCon.innerHTML = myData['consultContant'];
  53. //我的需求进行中
  54. if(myData["consultStatus"] == 0){
  55. oconfirm.classList.remove('displayNone');//我的需求,进行中
  56. ostatus.setAttribute('status','consultStatus='+myData["consultStatus"]);
  57. clickConfirm(consultId);
  58. }else {
  59. ochatFooter.style.display = 'none';//对话底部隐藏
  60. if(myData["assessStatus"] == 0){
  61. oassessBtn.classList.remove('displayNone');//我的需求,未评价
  62. ostatus.setAttribute('status','');
  63. clickweiassess(consultId);
  64. ostatus.setAttribute('status','myNeedAssessStatus='+myData["assessStatus"]);
  65. }else {
  66. oassessed.classList.remove('displayNone');//我的需求,已评价
  67. ostatus.setAttribute('status','myNeedAssessStatus='+myData["assessStatus"]);
  68. //评价星级
  69. var starCount = myData["assessStar"];
  70. var starlist = omy_starContainer.children;
  71. for(var i = 0; i < starCount; i++) {
  72. starlist[i].classList.remove('icon-favor');
  73. starlist[i].classList.add('icon-favorfill');
  74. };
  75. omyNeeAss.addEventListener('tap',function() {
  76. clickGodetail(omy_starContainer,consultId,manFlag)
  77. });
  78. }
  79. }
  80. console.log("关闭等待狂")
  81. plus.nativeUI.closeWaiting();
  82. plus.webview.currentWebview().show("slide-in-right",150);
  83. },
  84. error:function(xhr,type,errorThrown){
  85. plus.nativeUI.toast("服务器链接超时", toastStyle);
  86. }
  87. });
  88. }else if(manFlag == 'consult'){
  89. mui.ajax(baseUrl+'/ajax/consult/qapro',{
  90. data:{"consultId":consultId,"readStatus":"1"},
  91. dataType:'json',//服务器返回json格式数据
  92. type:'get',//HTTP请求类型
  93. timeout:10000,//超时时间设置为10秒;
  94. success:function(data){
  95. myData = data.data;
  96. ochatName.innerHTML = myData["professor"]["name"];
  97. var consultTitle = '关于'+myData["consultTitle"]+"的咨询";
  98. oconsultTitle.innerHTML = consultTitle;
  99. oconsultCon.innerHTML = myData['consultContant'];
  100. //收到咨询进行中
  101. if(myData["consultStatus"] == 0){
  102. owaying.classList.remove('displayNone');
  103. // ochatFooter.classList.remove('displayNone');
  104. }else {//收到咨询已完成
  105. ochatFooter.style.display = 'none';//对话底部隐藏
  106. if(myData["assessStatus"] == 0){//收到咨询未评价
  107. othat_weiassess.classList.remove('displayNone');
  108. }else{//收到咨询已评价(评价星级和评价内容)
  109. othat_assessed.classList.remove('displayNone');
  110. //评价星级
  111. var starCount = myData["assessStar"];
  112. var starlist = ozixunstarContainer.children;
  113. for(var i = 0; i < starCount; i++) {
  114. starlist[i].classList.remove('icon-favor');
  115. starlist[i].classList.add('icon-favorfill');
  116. }
  117. ogetConAss.addEventListener('tap',function() {
  118. clickGodetail(ozixunstarContainer,consultId,manFlag)
  119. //
  120. });
  121. }
  122. }
  123. plus.nativeUI.closeWaiting();
  124. plus.webview.currentWebview().show("slide-in-right",150);
  125. },
  126. error:function(xhr,type,errorThrown){
  127. plus.nativeUI.toast("服务器链接超时", toastStyle);
  128. }
  129. });
  130. };
  131. };
  132. /*点击确认完成*/
  133. function clickConfirm(consultId) {
  134. oconfirmBtn.addEventListener('tap', function() {
  135. setState(consultId);//点击确认,更新咨询状态
  136. var btnArray = ['确定','取消'];
  137. mui.confirm('确认此次咨询已完成?', 'ni', btnArray, function(e) {
  138. console.log(e.index);
  139. if (e.index == 0) {//确定
  140. goassessFun(consultId);//进入评价页面
  141. } else {//取消
  142. oconfirm.classList.add('displayNone');
  143. ochatFooter.classList.add('displayNone');
  144. getHeadInfo('myNeed',consultId);
  145. }
  146. })
  147. });
  148. };
  149. /*打开评价详情函数*/
  150. function goassessDetail(consultId,manFlag) {
  151. mui.openWindow({
  152. id:'chat-assess-detail.html',
  153. url:'chat-assess-detail.html',
  154. extras:{'consultId':consultId,'manFlag':manFlag}//向评价页面传值;咨询id
  155. });
  156. }
  157. /*点击已评价,进入评价详情*/
  158. function clickGodetail(btn,consultId,manFlag) {
  159. btn.addEventListener('tap',function(){
  160. goassessDetail(consultId,manFlag);
  161. });
  162. }
  163. /*点击未评价,进入评价页面*/
  164. function clickweiassess(consultId){
  165. oassessBtn.addEventListener('tap',function(){
  166. goassessFun(consultId);
  167. });
  168. };
  169. /*打开评价页面*/
  170. function goassessFun(consultId) {
  171. mui.openWindow({
  172. id:'chat-assess.html',
  173. url:'chat-assess.html',
  174. extras:{'consultId':consultId}//向评价页面传值;咨询id
  175. });
  176. };
  177. /*更改咨询状态,进行中--完成*/
  178. function setState(consultId) {
  179. mui.ajax(baseUrl+'/ajax/consult/finishTime',{
  180. data:{
  181. "consultId":consultId, //咨询ID
  182. "consultStatus":"1", //咨询状态 0-进行中,1-已完成
  183. },
  184. dataType:'json',//服务器返回json格式数据
  185. type:'post',//HTTP请求类型
  186. timeout:10000,//超时时间设置为10秒;
  187. success:function(data){
  188. console.log("更新咨询状态")
  189. console.log(data.data)
  190. },
  191. error:function(xhr,type,errorThrown){
  192. plus.nativeUI.toast("服务器链接超时", toastStyle);
  193. }
  194. });
  195. };
  196. /*评价完成返回 刷新==自定义事件*/
  197. window.addEventListener('refresh',function(event){
  198. //通过event.detail可获得传递过来的参数内容
  199. var self = plus.webview.currentWebview();
  200. console.log(self);
  201. var consultId = self.consultId;
  202. oconfirm.classList.add('displayNone');
  203. ochatFooter.classList.add('displayNone');
  204. oassessBtn.classList.add('displayNone');
  205. getHeadInfo('myNeed',consultId);
  206. });
  207. var MIN_SOUND_TIME = 800;
  208. template.config('escape', false);
  209. //mui.plusReady=function(fn){fn();};
  210. mui.plusReady(function() {
  211. var userid = plus.storage.getItem('userid');
  212. var self = plus.webview.currentWebview();
  213. console.log(self.id)
  214. var consultId = self.consultId;
  215. var consultantId = self.consultantId;
  216. /*返回咨询列表页*/
  217. obackBtn.addEventListener('tap',function() {
  218. /*返回咨询列表*/
  219. var status = ostatus.getAttribute('status');
  220. var consultList = plus.webview.getWebviewById('html/consultlist.html');
  221. console.log(consultId)
  222. consultList.show();
  223. mui.fire(consultList,'backlist',{'consultId':consultId,'status':status});
  224. });
  225. console.log('consultId=='+consultId);
  226. console.log('userid=='+userid);
  227. console.log('consultantId=='+consultantId);
  228. if(userid == consultantId){//我的需求
  229. //头部信息
  230. var manFlag = 'myNeed';
  231. getHeadInfo(manFlag,consultId);
  232. }else {//收到咨询
  233. //头部信息
  234. var manFlag = 'consult';
  235. getHeadInfo(manFlag,consultId);
  236. };
  237. //渲染对话内容
  238. chatCon(consultId,userid);
  239. //根据咨询id查询消息
  240. function chatCon(consultId,userid) {
  241. mui.ajax(baseUrl+'/ajax/tidings/qacon',{
  242. data:{
  243. "consultId":consultId
  244. },
  245. dataType:'json',//服务器返回json格式数据
  246. type:'get',//HTTP请求类型
  247. timeout:10000,//超时时间设置为10秒;
  248. success:function(data){
  249. var myData = data.data;
  250. for(var i = 0; i < myData.length; i++ ){
  251. if(myData[i]['professor']['id'] == userid){
  252. /*判断是否有头像*/
  253. /*if(myData[i]['professor']['hasHeadImage'] == 1){
  254. document.getElementById("selfImg").setAttribute('src',baseUrl + "/images/head/" + myData[i]["professor"].id + "_m.jpg")
  255. }else {
  256. document.getElementById("selfImg").setAttribute("src","../images/default-photo.jpg");
  257. }*/
  258. record.push({
  259. sender: 'self',
  260. type: 'text',
  261. content: myData[i]["tidingsContant"]
  262. });
  263. }else{
  264. /*判断是否有头像*/
  265. console.log(myData[i]['professor'].id);
  266. console.log(userid);
  267. /*if(myData[i]['professor'] != '' && myData[i]['professor'] != undefined){
  268. if(myData[i]['professor']['hasHeadImage'] == 1){
  269. document.getElementById("thatImg").setAttribute('src',baseUrl + "/images/head/" + myData[i]["professor"].id + "_m.jpg")
  270. }else {
  271. console.log(document.getElementById("thatImg"))
  272. document.getElementById("thatImg").setAttribute("src","../images/default-photo.jpg");
  273. }
  274. }*/
  275. record.push({
  276. sender: 'zs',
  277. type: 'text',
  278. content: myData[i]["tidingsContant"]
  279. });
  280. }
  281. }
  282. bindMsgList();
  283. },
  284. error:function(xhr,type,errorThrown){
  285. //根据消息id查询消息失败
  286. plus.nativeUI.toast("服务器链接超时", toastStyle);
  287. }
  288. });
  289. }
  290. plus.webview.currentWebview().setStyle({
  291. softinputMode: "adjustResize"
  292. });
  293. var showKeyboard = function() {
  294. if (mui.os.ios) {
  295. var webView = plus.webview.currentWebview().nativeInstanceObject();
  296. webView.plusCallMethod({
  297. "setKeyboardDisplayRequiresUserAction": false
  298. });
  299. } else {
  300. var Context = plus.android.importClass("android.content.Context");
  301. var InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");
  302. var main = plus.android.runtimeMainActivity();
  303. var imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);
  304. imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
  305. //var view = ((ViewGroup)main.findViewById(android.R.id.content)).getChildAt(0);
  306. imm.showSoftInput(main.getWindow().getDecorView(), InputMethodManager.SHOW_IMPLICIT);
  307. //alert("ll");
  308. }
  309. };
  310. /*var record = [{
  311. sender: 'zs',
  312. type: 'text',
  313. content: 'Hi,我是 科袖 小管家!'
  314. }];*/
  315. var record = [];
  316. var ui = {
  317. body: document.querySelector('body'),
  318. footer: document.querySelector('footer'),
  319. footerRight: document.querySelector('.footer-right'),
  320. footerLeft: document.querySelector('.footer-left'),
  321. btnMsgType: document.querySelector('#msg-type'),
  322. boxMsgText: document.querySelector('#msg-text'),
  323. boxMsgSound: document.querySelector('#msg-sound'),
  324. btnMsgImage: document.querySelector('#msg-image'),
  325. areaMsgList: document.querySelector('#msg-list'),
  326. boxSoundAlert: document.querySelector('#sound-alert'),
  327. h: document.querySelector('#h'),
  328. content: document.querySelector('.mui-content')
  329. };
  330. ui.h.style.width = ui.boxMsgText.offsetWidth+'px';
  331. //alert(ui.boxMsgText.offsetWidth );
  332. var footerPadding = ui.footer.offsetHeight - ui.boxMsgText.offsetHeight;
  333. var msgItemTap = function(msgItem, event) {
  334. var msgType = msgItem.getAttribute('msg-type');
  335. var msgContent = msgItem.getAttribute('msg-content')
  336. if (msgType == 'sound') {
  337. player = plus.audio.createPlayer(msgContent);
  338. var playState = msgItem.querySelector('.play-state');
  339. playState.innerText = '正在播放...';
  340. player.play(function() {
  341. playState.innerText = '点击播放';
  342. }, function(e) {
  343. playState.innerText = '点击播放';
  344. });
  345. }
  346. };
  347. var imageViewer = new mui.ImageViewer('.msg-content-image', {
  348. dbl: false
  349. });
  350. var bindMsgList = function() {
  351. //绑定数据:
  352. /*tp.bind({
  353. template: 'msg-template',
  354. element: 'msg-list',
  355. model: record
  356. });*/
  357. ui.areaMsgList.innerHTML = template('msg-template', {
  358. "record": record
  359. });
  360. var msgItems = ui.areaMsgList.querySelectorAll('.msg-item');
  361. [].forEach.call(msgItems, function(item, index) {
  362. item.addEventListener('tap', function(event) {
  363. msgItemTap(item, event);
  364. }, false);
  365. });
  366. imageViewer.findAllImage();
  367. ui.areaMsgList.scrollTop = ui.areaMsgList.scrollHeight + ui.areaMsgList.offsetHeight;
  368. };
  369. bindMsgList();
  370. window.addEventListener('resize', function() {
  371. ui.areaMsgList.scrollTop = ui.areaMsgList.scrollHeight + ui.areaMsgList.offsetHeight;
  372. }, false);
  373. var send = function(msg) {
  374. record.push(msg);
  375. bindMsgList();
  376. toRobot(msg.content);
  377. };
  378. var toRobot = function(info) {
  379. var apiUrl = baseUrl+"/ajax/tidings";//保存消息接口
  380. mui.ajax(apiUrl,{
  381. data:{
  382. "tidingsContant":ui.boxMsgText.value, //消息内容
  383. "senderId":userid, //发送者ID
  384. "consultId":consultId //咨询ID
  385. },
  386. dataType:'json',//服务器返回json格式数据
  387. type:'post',//HTTP请求类型
  388. timeout:10000,//超时时间设置为10秒;
  389. success:function(data){
  390. console.log('消息成功'+data.data);
  391. //alert(JSON.stringify(data));
  392. },
  393. error:function(xhr,type,errorThrown){
  394. //保存消息失败
  395. plus.nativeUI.toast("抱歉,咨询失败", toastStyle);
  396. }
  397. });
  398. };
  399. function msgTextFocus() {
  400. ui.boxMsgText.focus();
  401. setTimeout(function() {
  402. ui.boxMsgText.focus();
  403. }, 150);
  404. }
  405. //解决长按“发送”按钮,导致键盘关闭的问题;
  406. ui.footerRight.addEventListener('touchstart', function(event) {
  407. // if (ui.btnMsgType.classList.contains('mui-icon-paperplane')) {
  408. msgTextFocus();
  409. // event.preventDefault();
  410. // }
  411. });
  412. //解决长按“发送”按钮,导致键盘关闭的问题;
  413. ui.footerRight.addEventListener('touchmove', function(event) {
  414. // if (ui.btnMsgType.classList.contains('mui-icon-paperplane')) {
  415. msgTextFocus();
  416. // event.preventDefault();
  417. // }
  418. });
  419. // ui.footerRight.addEventListener('touchcancel', function(event) {
  420. // if (ui.btnMsgType.classList.contains('mui-icon-paperplane')) {
  421. // msgTextFocus();
  422. // event.preventDefault();
  423. // }
  424. // });
  425. // ui.footerRight.addEventListener('touchend', function(event) {
  426. // if (ui.btnMsgType.classList.contains('mui-icon-paperplane')) {
  427. // msgTextFocus();
  428. // event.preventDefault();
  429. // }
  430. // });
  431. ui.footerRight.addEventListener('release', function(event) {
  432. // if (ui.btnMsgType.classList.contains('mui-icon-paperplane')) {//发送
  433. //showKeyboard();
  434. ui.boxMsgText.focus();
  435. setTimeout(function() {
  436. ui.boxMsgText.focus();//获取焦点
  437. }, 150);
  438. // event.detail.gesture.preventDefault();
  439. send({
  440. sender: 'self',
  441. type: 'text',
  442. content: ui.boxMsgText.value.replace(new RegExp('\n', 'gm'), '<br/>')
  443. });
  444. ui.boxMsgText.value = '';
  445. mui.trigger(ui.boxMsgText, 'input', null); //发送消息向后台传数据
  446. /*} else if (ui.btnMsgType.classList.contains('mui-icon-mic')) {//说话功能
  447. ui.btnMsgType.classList.add('mui-icon-compose');
  448. ui.btnMsgType.classList.remove('mui-icon-mic');
  449. ui.boxMsgText.style.display = 'none';
  450. ui.boxMsgSound.style.display = 'block';
  451. ui.boxMsgText.blur();
  452. document.body.focus();
  453. } else if (ui.btnMsgType.classList.contains('mui-icon-compose')) {//编辑
  454. ui.btnMsgType.classList.add('mui-icon-mic');
  455. ui.btnMsgType.classList.remove('mui-icon-compose');
  456. ui.boxMsgSound.style.display = 'none';
  457. ui.boxMsgText.style.display = 'block';
  458. //--
  459. //showKeyboard();
  460. ui.boxMsgText.focus();
  461. setTimeout(function() {
  462. ui.boxMsgText.focus();
  463. }, 150);
  464. }*/
  465. }, false);
  466. /*ui.footerLeft.addEventListener('tap', function(event) {
  467. var btnArray = [{
  468. title: "拍照"
  469. }, {
  470. title: "从相册选择"
  471. }];
  472. plus.nativeUI.actionSheet({
  473. title: "选择照片",
  474. cancel: "取消",
  475. buttons: btnArray
  476. }, function(e) {
  477. var index = e.index;
  478. switch (index) {
  479. case 0:
  480. break;
  481. case 1:
  482. var cmr = plus.camera.getCamera();
  483. cmr.captureImage(function(path) {
  484. send({
  485. sender: 'self',
  486. type: 'image',
  487. content: "file://" + plus.io.convertLocalFileSystemURL(path)
  488. });
  489. }, function(err) {});
  490. break;
  491. case 2:
  492. plus.gallery.pick(function(path) {
  493. send({
  494. sender: 'self',
  495. type: 'image',
  496. content: path
  497. });
  498. }, function(err) {}, null);
  499. break;
  500. }
  501. });
  502. }, false); */
  503. var setSoundAlertVisable=function(show){
  504. if(show){
  505. ui.boxSoundAlert.style.display = 'block';
  506. ui.boxSoundAlert.style.opacity = 1;
  507. }else{
  508. ui.boxSoundAlert.style.opacity = 0;
  509. //fadeOut完成再真正隐藏
  510. setTimeout(function(){
  511. ui.boxSoundAlert.style.display = 'none';
  512. },200);
  513. }
  514. };
  515. var recordCancel = false;
  516. var recorder = null;
  517. var audio_tips = document.getElementById("audio_tips");
  518. var startTimestamp = null;
  519. var stopTimestamp = null;
  520. var stopTimer = null;
  521. ui.boxMsgSound.addEventListener('hold', function(event) {
  522. recordCancel = false;
  523. if(stopTimer)clearTimeout(stopTimer);
  524. audio_tips.innerHTML = "手指上划,取消发送";
  525. ui.boxSoundAlert.classList.remove('rprogress-sigh');
  526. setSoundAlertVisable(true);
  527. recorder = plus.audio.getRecorder();
  528. if (recorder == null) {
  529. plus.nativeUI.toast("不能获取录音对象");
  530. return;
  531. }
  532. startTimestamp = (new Date()).getTime();
  533. recorder.record({
  534. filename: "_doc/audio/"
  535. }, function(path) {
  536. if (recordCancel) return;
  537. send({
  538. sender: 'self',
  539. type: 'sound',
  540. content: path
  541. });
  542. }, function(e) {
  543. plus.nativeUI.toast("录音时出现异常: " + e.message);
  544. });
  545. }, false);
  546. ui.body.addEventListener('drag', function(event) {
  547. //console.log('drag');
  548. if (Math.abs(event.detail.deltaY) > 50) {
  549. if (!recordCancel) {
  550. recordCancel = true;
  551. if (!audio_tips.classList.contains("cancel")) {
  552. audio_tips.classList.add("cancel");
  553. }
  554. audio_tips.innerHTML = "松开手指,取消发送";
  555. }
  556. } else {
  557. if (recordCancel) {
  558. recordCancel = false;
  559. if (audio_tips.classList.contains("cancel")) {
  560. audio_tips.classList.remove("cancel");
  561. }
  562. audio_tips.innerHTML = "手指上划,取消发送";
  563. }
  564. }
  565. }, false);
  566. ui.boxMsgSound.addEventListener('release', function(event) {
  567. //console.log('release');
  568. if (audio_tips.classList.contains("cancel")) {
  569. audio_tips.classList.remove("cancel");
  570. audio_tips.innerHTML = "手指上划,取消发送";
  571. }
  572. //
  573. stopTimestamp = (new Date()).getTime();
  574. if (stopTimestamp - startTimestamp < MIN_SOUND_TIME) {
  575. audio_tips.innerHTML = "录音时间太短";
  576. ui.boxSoundAlert.classList.add('rprogress-sigh');
  577. recordCancel = true;
  578. stopTimer=setTimeout(function(){
  579. setSoundAlertVisable(false);
  580. },800);
  581. }else{
  582. setSoundAlertVisable(false);
  583. }
  584. recorder.stop();
  585. }, false);
  586. ui.boxMsgSound.addEventListener("touchstart", function(e) {
  587. //console.log("start....");
  588. e.preventDefault();
  589. });
  590. ui.boxMsgText.addEventListener('input', function(event) {
  591. ui.btnMsgType.classList[ui.boxMsgText.value == '' ? 'remove' : 'add']('mui-icon-paperplane');
  592. ui.btnMsgType.setAttribute("for", ui.boxMsgText.value == '' ? '' : 'msg-text');
  593. ui.h.innerText = ui.boxMsgText.value.replace(new RegExp('\n', 'gm'), '\n-') || '-';
  594. ui.footer.style.height = (ui.h.offsetHeight + footerPadding) + 'px';
  595. ui.content.style.paddingBottom = ui.footer.style.height;
  596. });
  597. ui.boxMsgText.addEventListener('tap', function(event) {
  598. ui.boxMsgText.focus();
  599. setTimeout(function() {
  600. ui.boxMsgText.focus();
  601. }, 0);
  602. }, false);
  603. });
  604. })