No Description

chats.js 22KB

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