Ei kuvausta

consult.js 16KB

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