Brak opisu

consult.js 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. /*是否登录,要显示的,mui-content*/
  2. var content1 = document.querySelectorAll('.mui-content')[0];
  3. var content2 = document.querySelectorAll('.mui-content')[1];
  4. var pageIndex = 1; // 页数
  5. var allPages = 1; // 总页数
  6. var table = document.body.querySelector("#table");//咨询列表容器
  7. var oneedval = document.getElementById("needval");//咨询/需求
  8. var otypeval = document.getElementById("typeval");//咨询类型
  9. var ostateval = document.getElementById("stateval");//咨询状态
  10. var osortval = document.getElementById("sortval");//时间排序
  11. /*登陆*/
  12. window.addEventListener('logined', function(event) {
  13. var userId = event.detail.id;
  14. content1.style.display = 'block';
  15. content2.style.display = 'none';
  16. initdata();
  17. if(plus.nativeUI.showWaiting()){
  18. console.log("showWaiting")
  19. plus.nativeUI.closeWaiting();//关闭等待框
  20. }
  21. });
  22. /*退出*/
  23. window.addEventListener('exited', function(event) {
  24. var userId = event.detail.id;
  25. content1.style.display = 'none';
  26. content2.style.display = 'block';
  27. });
  28. mui.plusReady(function() {
  29. var regBtn = document.getElementById("regBtn");
  30. var logBtn = document.getElementById("logBtn");
  31. // 注册
  32. regBtn.addEventListener('tap',function(){
  33. mui.openWindow({
  34. url: '../html/reg.html',
  35. id: '../html/reg.html',
  36. show: {
  37. aniShow: "slide-in-right"
  38. }
  39. });
  40. });
  41. //登陆
  42. logBtn.addEventListener('tap',function(){
  43. mui.openWindow({
  44. url: '../html/login.html',
  45. id: '../html/login.html',
  46. show: {
  47. aniShow: "slide-in-right"
  48. }
  49. });
  50. });
  51. });
  52. mui.plusReady(function() {
  53. var self = plus.webview.currentWebview();
  54. console.log('当前咨询列表页id==='+self.id);
  55. })
  56. mui.init({
  57. pullRefresh: {
  58. container: '#zixunpullrefresh',
  59. /*down: {
  60. auto: true,
  61. contentdown : "下拉可以刷新",
  62. contentover : "释放立即刷新",
  63. contentrefresh : "正在刷新...",
  64. callback: pulldownRefresh
  65. },*/
  66. up: {
  67. contentrefresh: '正在加载...',
  68. callback: pullupRefresh
  69. }
  70. }
  71. });
  72. /**
  73. * 下拉刷新具体业务实现
  74. */
  75. function pulldownRefresh() {
  76. pageIndex = 1;
  77. console.log('下拉刷新');
  78. //table.innerHTML = '';
  79. setTimeout(function() {
  80. getaData();
  81. mui('#zixunpullrefresh').pullRefresh().endPulldownToRefresh();
  82. mui('#zixunpullrefresh').pullRefresh().refresh(true);
  83. }, 1000);
  84. }
  85. //上拉加载具体业务实现
  86. function pullupRefresh() {
  87. pageIndex = ++pageIndex;
  88. console.log('第'+pageIndex+'页');
  89. console.log('上拉加载更多');
  90. setTimeout(function() {
  91. getaData();
  92. }, 1000);
  93. };
  94. if(mui.os.plus) {
  95. mui.plusReady(function() {
  96. setTimeout(function() {
  97. mui('#zixunpullrefresh').pullRefresh().pulldownLoading();
  98. }, 500);
  99. });
  100. } else {
  101. mui.ready(function() {
  102. mui('#zixunpullrefresh').pullRefresh().pulldownLoading();
  103. });
  104. };
  105. //点击选择
  106. function checkedFun(i){
  107. mui("#middlePopover"+i).on('tap','.mui-navigate-right',function(e){
  108. allPages = 1;
  109. pageIndex = 1;
  110. plus.nativeUI.showWaiting(); //显示等待框
  111. document.getElementById("headck"+i).innerHTML = this.innerHTML;
  112. var value = this.getAttribute("ck"+i);
  113. document.getElementById("headck"+i).setAttribute('headck',value);
  114. document.querySelector('.mui-backdrop').style.display = 'none';
  115. document.getElementById("middlePopover"+i).style.display = 'none';
  116. //去掉样式类mui-active,要不然会多点击一次
  117. document.getElementById("middlePopover"+i).classList.remove('mui-active');
  118. //咨询类型传值不同,传""(空),技术咨询、资源咨询、其他事务
  119. otypeval.value = document.getElementById("headck2").getAttribute('headck');
  120. if(otypeval.value == 0) {
  121. otypeval.value = '';
  122. }else {
  123. otypeval.value = document.getElementById("headck2").innerHTML;
  124. }
  125. oneedval.value = document.getElementById("headck1").getAttribute('headck');
  126. ostateval.value = document.getElementById("headck3").getAttribute('headck');
  127. osortval.value = document.getElementById("headck4").getAttribute('headck');
  128. initdata();
  129. plus.nativeUI.closeWaiting();//关闭等待框
  130. });
  131. };
  132. checkedFun(1);
  133. checkedFun(2);
  134. checkedFun(3);
  135. checkedFun(4);
  136. function getaData() {
  137. mui.plusReady(function() {
  138. var userid = plus.storage.getItem('userid');
  139. /*console.log("刷新传参"+oneedval.value+otypeval.value+ostateval.value+osortval.value);
  140. console.log('加载页'+pageIndex)*/
  141. mui.ajax(baseUrl+'/ajax/consult/pq', {
  142. data: {
  143. "professorId":userid, //专家ID
  144. "consultOrNeed":oneedval.value , //接受咨询或咨询别人的状态值,0-全部,1-别人咨询我的,2-我咨询别人的 默认为0
  145. "consultType":otypeval.value, //咨询类型(技术咨询、资源咨询、其他事务)
  146. "status":ostateval.value, //查询状态 0-全部,1-进行中,2-未感谢,3-未评价,4-已完成, 可以不传,默认为0
  147. "timeType":osortval.value, //排序类型 0-按发起时间正序,1-按最后回复时间倒序,2-按完成时间倒序 默认为1
  148. "pageSize":10,
  149. "pageNo":pageIndex //当前页码 默认为1
  150. },
  151. dataType: 'json',
  152. type: 'get',
  153. timeout: 10000,
  154. success: function(data) {
  155. if (data.success) {
  156. var datalist = data.data.data;
  157. var total = data.data.total;
  158. var pageSize = data.data.pageSize;
  159. var result = '';
  160. allPages = Math.ceil(total / pageSize);/*获取总的分页数*/
  161. if (allPages == 1) { //下拉刷新需要先清空数据
  162. table.innerHTML = '';// 在这里清空可以防止刷新时白屏
  163. }
  164. eachData(userid,datalist);
  165. if(pageIndex < allPages){
  166. mui('#zixunpullrefresh').pullRefresh().endPullupToRefresh(false); /*能上拉*/
  167. }else{
  168. mui('#zixunpullrefresh').pullRefresh().endPullupToRefresh(true);/*不能上拉*/
  169. }
  170. }
  171. },
  172. error: function(xhr, type, errerThrown) {
  173. mui.toast('网络异常,请稍候再试');
  174. plus.nativeUI.closeWaiting();
  175. mui('#zixunpullrefresh').pullRefresh().endPullupToRefresh(true);
  176. }
  177. });
  178. });
  179. };
  180. /*重新登陆,咨询列表数据刷新*/
  181. /*window.addEventListener('relogin', function(event) {
  182. // alert('重新登陆')
  183. userId = event.detail.id;
  184. console.log(userId);
  185. initdata();
  186. if(plus.nativeUI.showWaiting()){
  187. console.log("showWaiting")
  188. plus.nativeUI.closeWaiting();//关闭等待框
  189. }
  190. });*/
  191. initdata();
  192. /*第一次加载数据*/
  193. function initdata() {
  194. mui.plusReady(function() {
  195. /*plus.nativeUI.showWaiting()//显示等待框*/
  196. var userid = plus.storage.getItem('userid');
  197. if(otypeval.value == 0){
  198. otypeval.value ='';
  199. }
  200. // console.log('初始化传参一:'+oneedval.value+'二'+otypeval.value+'三'+ostateval.value+'四'+osortval.value);
  201. console.log()
  202. plus.nativeUI.showWaiting();
  203. mui.ajax(baseUrl+'/ajax/consult/pq', {
  204. data: {
  205. "professorId":userid, //专家ID
  206. "consultOrNeed":oneedval.value , //接受咨询或咨询别人的状态值,0-全部,1-别人咨询我的,2-我咨询别人的 默认为0
  207. "consultType":otypeval.value, //咨询类型(技术咨询、资源咨询、其他事务)
  208. "status":ostateval.value, //查询状态 0-全部,1-进行中,2-未感谢,3-未评价,4-已完成, 可以不传,默认为0
  209. "timeType":osortval.value, //排序类型 0-按发起时间正序,1-按最后回复时间倒序,2-按完成时间倒序 默认为1
  210. "pageSize":10, //每页记录数 默认为5
  211. "pageNo":1 //当前页码 默认为1
  212. },
  213. dataType: 'json',
  214. type: 'get',
  215. timeout: 10000,
  216. success: function(data) {
  217. table.innerHTML = '';//清空容器
  218. if (data.success && data.data.data != '') {
  219. var datalist = data.data.data;
  220. eachData(userid,datalist);
  221. mui('#zixunpullrefresh').pullRefresh().refresh(true);//重置下拉加载
  222. plus.nativeUI.closeWaiting();//关闭等待框
  223. }else {
  224. plus.nativeUI.closeWaiting();//关闭等待框
  225. /*plus.nativeUI.toast("您目前没有咨询");*/
  226. mui('#zixunpullrefresh').pullRefresh().disablePullupToRefresh();
  227. }
  228. },
  229. error: function(xhr, type, errerThrown) {
  230. mui.toast('网络异常,请稍候再试');
  231. plus.nativeUI.closeWaiting();
  232. }
  233. });
  234. });
  235. };
  236. //判断对方是否有聊天内容,加回复:。。。
  237. function isChat(consultId,userid) {
  238. var length = 0;
  239. mui.ajax(baseUrl+'/ajax/tidings/qacon',{
  240. data:{
  241. "consultId":consultId
  242. },
  243. async:false,
  244. dataType:'json',//服务器返回json格式数据
  245. type:'get',//HTTP请求类型
  246. timeout:10000,//超时时间设置为10秒;
  247. success:function(data){
  248. var myData = data.data;
  249. for(var i = 0; i < myData.length; i++ ){
  250. if(myData[i]['professor']['id'] !=userid){
  251. length++;
  252. }
  253. }
  254. },
  255. error:function(xhr,type,errorThrown){
  256. //根据消息id查询消息失败
  257. plus.nativeUI.toast("服务器链接超时", toastStyle);
  258. }
  259. });
  260. return length;
  261. }
  262. //更新读取状态
  263. function setReadState(consultId) {
  264. mui.ajax(baseUrl+'/ajax/consult/readStatus',{
  265. data:{"consultId":consultId}, //咨询ID
  266. dataType:'json',//服务器返回json格式数据
  267. type:'post',//HTTP请求类型
  268. timeout:10000,//超时时间设置为10秒;
  269. success:function(data){
  270. },
  271. error:function(xhr,type,errorThrown){
  272. }
  273. });
  274. }
  275. //打开子页面
  276. mui(".mui-table-view").on('tap','.itemBtn',function(){
  277. var o_this = this;
  278. // console.log(this.getAttribute('consultId'));
  279. mui.plusReady(function() {
  280. // console.log(o_this.getAttribute("consultId"));
  281. var nwaiting = plus.nativeUI.showWaiting();//显示原生等待框
  282. //更新读取状态
  283. setReadState(o_this.getAttribute("consultId"));
  284. webviewShow = plus.webview.create("../html/chats.html",'chats.html',{},
  285. {'consultId':o_this.getAttribute("consultId"),'consultantId':o_this.getAttribute("consultantId"),'readState':1});
  286. //当聊天页面加载完再打开
  287. webviewShow.addEventListener("loaded", function() {
  288. }, false);
  289. });
  290. });
  291. /*由聊天页面返回咨询列表,要更新咨询状态,和更新未读信息:::自定义事件*/
  292. window.addEventListener('backlist',function(event){
  293. //通过event.detail可获得传递过来的参数内容
  294. var self = plus.webview.currentWebview();
  295. var consultId = event.detail.consultId;
  296. var status = event.detail.status;
  297. //由聊天页返回咨询页,改变咨询状态,和咨询状态样式
  298. mui('.status').each(function(index,item){
  299. if(this.getAttribute('consultId') == consultId) {
  300. if(status == 'myNeedAssessStatus=0'){//未评价
  301. this.classList.remove('status-1');
  302. this.classList.add('status-2');
  303. this.innerHTML = '待评价';
  304. }else if(status == 'myNeedAssessStatus=1'){
  305. this.classList.remove('status-1');
  306. this.classList.add('status-3');
  307. this.innerHTML = '已完成';
  308. }
  309. };
  310. });
  311. //由聊天页返回咨询页,改变未读状态
  312. mui('.readstate').each(function(index,item){
  313. if(this.getAttribute('class').indexOf('displayBlock') != -1){//包含displayBlock
  314. console.log(this.getAttribute('consultId'));
  315. if(this.getAttribute('consultId') == consultId){
  316. this.classList.remove('displayBlock');
  317. this.classList.add('displayNone');
  318. console.log(this.classList);
  319. }
  320. }
  321. });
  322. // initdata();
  323. });
  324. function eachData(userid,datalist) {
  325. /*表格填充数据 mui.each是异步的*/
  326. mui.each(datalist, function(index, item) {
  327. var title,
  328. zhicehng,
  329. zhiwei,
  330. orgName,
  331. address,
  332. lastReply,
  333. status,
  334. statusStyle,
  335. lastReplyTime,
  336. lastReplyCon,
  337. unreadCount,
  338. unreadStyle,
  339. proModify,
  340. photoUrl,
  341. consultType,
  342. chatlength;
  343. chatlength = isChat(item['consultId'],userid);//判断对方是否有发出消息
  344. if(chatlength == 0){
  345. title = item["consultTitle"];
  346. }else{
  347. title = "回复:" + item["consultTitle"];
  348. }
  349. // console.log(title)
  350. //咨询类型和状态
  351. if(item['consultantId'] != userid){//收到咨询
  352. if(item["consultStatus"] == 0){
  353. status = "进行中";
  354. statusStyle = 'status-1';
  355. }else if(item["consultStatus"] == 1){
  356. status = "已完成";
  357. statusStyle = 'status-3';
  358. }
  359. }else if(item['consultantId'] == userid){//我的需求
  360. if(item["consultStatus"] == 0){
  361. status = "进行中";
  362. statusStyle = 'status-1';
  363. }else if(item["consultStatus"] == 1){
  364. if(item["assessStatus"] == 0){
  365. status = '待评价';
  366. statusStyle = 'status-2';
  367. }else {
  368. status = '已完成';
  369. statusStyle = 'status-3';
  370. }
  371. }
  372. };
  373. if(item["professor"] == undefined){
  374. return ;
  375. }
  376. (item["professor"]["authentication"] == true)? proModify = 'authicon' : proModify = 'unauthicon';
  377. (item["professor"]["hasHeadImage"] == 0) ? photoUrl = "../images/default-photo.jpg":photoUrl = baseUrl + "/images/head/" + item["professor"].id + "_m.jpg";
  378. /*if(item["professor"]["title"] == undefined || item["professor"]["title"] == null || item["professor"]["title"] == ''){
  379. zhicehng = '';
  380. }else {
  381. zhicehng = item["professor"]["title"];
  382. }
  383. if(item["professor"]["office"] == undefined || item["professor"]["office"] == null || item["professor"]["office"] == ''){
  384. zhiwei = '';
  385. }else {
  386. if(zhicehng != ''){
  387. zhiwei = ', '+item["professor"]["office"];
  388. }else{
  389. zhiwei = item["professor"]["office"];
  390. }
  391. }
  392. if(item["professor"]["orgName"] == undefined || item["professor"]["orgName"] == null || item["professor"]["orgName"] == ''){
  393. orgName = '';
  394. }else {
  395. if(zhicehng != '' || zhiwei != ''){
  396. orgName = ', '+item["professor"]["orgName"];
  397. }else {
  398. orgName = item["professor"]["orgName"];
  399. }
  400. }
  401. if(item["professor"]["address"] == undefined || item["professor"]["address"] == null || item["professor"]["address"] == ''){
  402. address = '';
  403. }else {
  404. if(zhicehng != '' || zhiwei != '' || orgName !=''){
  405. address = ' | ' + item["professor"]["address"];
  406. }else {
  407. address = item["professor"]["address"];
  408. }
  409. }*/
  410. //咨询类型,只取两个字
  411. if(item["consultType"]) {
  412. consultType = item["consultType"].substr(0,2);
  413. }
  414. //最后回复
  415. lastReplyTime = lastReplyFn(userid,item["consultId"]).lastReplyTime;
  416. lastReplyCon = lastReplyFn(userid,item["consultId"]).lastReplyCon;
  417. if(lastReplyCon == undefined){
  418. lastReplyCon = '';
  419. }
  420. if(lastReplyTime == undefined){
  421. lastReplyTime = '';
  422. }
  423. //未读消息
  424. unreadCount = unreadConsultFn(userid,item["consultId"],index).unreadCount;
  425. unreadStyle = unreadConsultFn(userid,item["consultId"],index).style;
  426. var li = document.createElement('li');
  427. li.className = 'mui-table-view-cell mui-media';
  428. var str = '';
  429. str += '<div class="coutopicbox"><span class="coutheme mui-ellipsis mui-pull-left">'+title+'</span>'
  430. + '<div class="coustatus mui-pull-right"><span class="aimlabel">'+consultType+'</span>'
  431. + '<span class="'+statusStyle+' status" consultId="'+item["consultId"]+'">'+status+'</span></div></div>'
  432. + '<a class="proinfor itemBtn" consultId="'+item["consultId"]+'" consultantId="'+item["consultantId"]+'" >'
  433. + '<span class="mui-badge mui-badge-danger readstate '+unreadStyle+'" consultId="'+item["consultId"]+'">'+unreadCount+'</span>'
  434. + '<img class="mui-media-object mui-pull-left headimg headRadius" src="'+photoUrl+'">'
  435. + '<div class="mui-media-body">'
  436. + '<span class="listtit">'+item["professor"]["name"]+'<em class="mui-icon iconfont icon-vip '+proModify+'"></em><span class="thistime">'+lastReplyTime+'</span></span>';
  437. str += '<p class="listtit2">';
  438. if(item["professor"]["title"]){
  439. str += '<span>'+item["professor"]["title"]+'</span>, ';
  440. };
  441. if(item["professor"]["office"]){
  442. str += '<span>'+item["professor"]["office"]+'</span>, ';
  443. };
  444. if(item["professor"]["orgName"]){
  445. str += '<span>'+item["professor"]["orgName"]+'</span>';
  446. };
  447. if(item["professor"]["address"]){
  448. str += '<span> | '+item["professor"]["address"]+'</span>';
  449. };
  450. str +='</p><p class="listtit3 onlyone">'+lastReplyCon+'</p></div></a>';
  451. li.innerHTML = str;
  452. /*li.innerHTML = '<div class="coutopicbox">'
  453. + '<span class="coutheme mui-ellipsis mui-pull-left">'+title+'</span>'
  454. + '<div class="coustatus mui-pull-right"><span class="aimlabel">'+consultType+'</span>'
  455. + '<span class="'+statusStyle+' status" consultId="'+item["consultId"]+'">'+status+'</span></div></div>'
  456. + '<a class="proinfor itemBtn" consultId="'+item["consultId"]+'" consultantId="'+item["consultantId"]+'" >'
  457. + '<span class="mui-badge mui-badge-danger readstate '+unreadStyle+'" consultId="'+item["consultId"]+'">'+unreadCount+'</span>'
  458. + '<img class="mui-media-object mui-pull-left headimg headRadius" src="'+photoUrl+'">'
  459. + '<div class="mui-media-body">'
  460. + '<span class="listtit">'+item["professor"]["name"]+'<em class="mui-icon iconfont icon-vip '+proModify+'"></em><span class="thistime">'+lastReplyTime+'</span></span>'
  461. + '<p class="listtit2"><span>'+zhicehng+'</span><span>'+zhiwei+'</span><span>'+orgName+'</span><span>'+address+'</span></p>'
  462. + '<p class="listtit3 onlyone">'+lastReplyCon+'</p>'
  463. + '</div></a>';*/
  464. table.appendChild(li,table.firstChild);
  465. });
  466. };
  467. /*最后回复*/
  468. function lastReplyFn(sendId,consultId){
  469. var lastReplyTimeData,lastReplyTime,lastReplyCon;
  470. mui.ajax(baseUrl + '/ajax/tidings/qaLastRevovery',{
  471. data:{
  472. "consultId":consultId, //咨询ID
  473. "senderId":sendId //登录者ID
  474. },
  475. dataType:'json',//服务器返回json格式数据
  476. type:'get',//HTTP请求类型
  477. timeout:10000,//超时时间设置为10秒;
  478. async:false,
  479. success:function(data){
  480. /*console.log(data);*/
  481. if(data["data"] == null || data["data"] == "" || data["data"] == undefined){
  482. lastReplyTimeData = '';
  483. lastReplyTime = '';
  484. lastReplyCon = '';
  485. }
  486. else{
  487. lastReplyTimeData = data["data"]["createTime"];
  488. lastReplyTime =lastReplyTimeData.substr(0,4) + "-" + lastReplyTimeData.substr(4,2) + "-" + lastReplyTimeData.substr(6,2) + " " + lastReplyTimeData.substr(8,2)+ ":" +lastReplyTimeData.substr(10,2);
  489. lastReplyCon = data["data"]["tidingsContant"];
  490. }
  491. },
  492. error:function(xhr,type,errorThrown){
  493. }
  494. });
  495. return {
  496. "lastReplyTime":lastReplyTime,
  497. "lastReplyCon":lastReplyCon
  498. };
  499. };
  500. /*未读消息*/
  501. function unreadConsultFn (senderId,consultId,i){
  502. var unreadCount,style;
  503. mui.ajax(baseUrl +'/ajax/tidings/qaNotReadTidings',{
  504. data:{
  505. "senderId":senderId, //发送者ID
  506. "consultId":consultId //咨询ID
  507. },
  508. dataType:'json',//服务器返回json格式数据
  509. type:'get',//HTTP请求类型
  510. timeout:10000,//超时时间设置为10秒;
  511. async:false,
  512. success:function(data){
  513. unreadCount = data["data"];
  514. if(unreadCount == 0){
  515. style = 'displayNone';
  516. }else{
  517. style = 'displayBlock';
  518. }
  519. },
  520. error:function(xhr,type,errorThrown){
  521. }
  522. });
  523. return {"unreadCount":unreadCount,
  524. "style":style
  525. }
  526. };