portal html css js resource

answerLeaveW.js 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. (function(window) {
  2. function ajaxRequist(url, obj, type, fn) {
  3. $.ajax({
  4. url:url,
  5. data: obj,
  6. dataType: 'json', //服务器返回json格式数据
  7. type: type, //支持'GET'和'POST'
  8. traditional: true,
  9. success: function(data) {
  10. if(data.success) {
  11. fn(data.data)
  12. }
  13. },
  14. error: function(xhr, type, errorThrown) {
  15. $.MsgBox.Alert('提示', '服务器请求失败');
  16. }
  17. });
  18. }
  19. var LeaveWord = function() {
  20. var self = this;
  21. self.addHtml();
  22. self.bindEvent();
  23. }
  24. function lgin() {
  25. if($.cookie('userid') !="null") {
  26. return true;
  27. }
  28. quickLog();
  29. operatTab();
  30. closeLog();
  31. return false;
  32. }
  33. LeaveWord.prototype.addHtml=function() {
  34. $("body").append('<textarea class="txtArea" id="tt" style="position:absolute;top:0;left:-999px;"></textarea>')
  35. }
  36. LeaveWord.prototype.init = function(selecter,obj) {
  37. obj.rows=5;
  38. var self = this;
  39. ajaxRequist("/ajax/leavemsg/subject",obj, "GET", function(data) {
  40. if(!obj.id) {
  41. var strer='<div class="ifLogin">' +
  42. '<form class="ifLoginOn clearfix">' +
  43. '<div class="msgContbox">' +
  44. '<textarea class="msgCont" placeholder="请输入您的留言内容..." maxlength="200"></textarea>' +
  45. '<span class="msgconNum"><em>0</em>/200</span>'+
  46. '</div>'+
  47. '<input type="button" class="frmconbtn btnModel floatR" disabled="" value="留言">' +
  48. '</form>' +
  49. '</div>' +
  50. '<div class="form-item commentsArea">'+
  51. '<ul class="commentList">' +
  52. '</ul><div class="con-kong displayNone">暂无留言</div>' +
  53. '<button class="js-load-more displayNone"></button>' +
  54. '</div>'
  55. var $strer=$(strer);
  56. selecter.append($strer);
  57. if(data.length==0) {
  58. $strer.find(".con-kong").removeClass("displayNone");
  59. }
  60. $strer.find("input").data("ouse",obj);
  61. if(data.length>4){
  62. $strer.find(".js-load-more").removeClass("displayNone").data("obj",{
  63. sid:obj.sid,
  64. sType:4,
  65. time:data[data.length-1].createTime,
  66. id:data[data.length-1].id
  67. })
  68. }else{
  69. $strer.find(".js-load-more").addClass("displayNone")
  70. }
  71. }else{
  72. if(data.length>4){
  73. $strer.find(".js-load-more").removeClass("displayNone").data("obj",{
  74. sid:obj.sid,
  75. sType:4,
  76. time:data[data.length-1].createTime,
  77. id:data[data.length-1].id
  78. })
  79. }else{
  80. selecter.siblings(".js-load-more").addClass("displayNone")
  81. }
  82. }
  83. if(data.length == 0) {
  84. return;
  85. }
  86. if(selecter[0].className!="commentList") {
  87. self.topHtml($strer.find("ul"),data);
  88. }else{
  89. self.topHtml(selecter,data);
  90. }
  91. })
  92. }
  93. LeaveWord.prototype.topHtml=function(selector,data) {
  94. var id = $.cookie('userid');
  95. var self = this;
  96. for(var i = 0; i < data.length; i++) {
  97. var reply="";
  98. if(data[i].reciver) {
  99. reply = '<span class="huifu">回复 </span><a href="userInforShow.html?professorId='+data[i].reciver+'" class="userhref"><span class="h2Font messageName">张某某</span><em class="authiconNew" title="科袖认证专家"></em></a>'
  100. }
  101. var itemlist = '<li class="li-item">';
  102. itemlist += '<a href class="userhref"> <div class="madiaHead useHead useHeadMsg"></div></a>';
  103. itemlist += '<div class="madiaInfo">';
  104. itemlist += '<p><a href="userInforShow.html?professorId='+data[i].sender+'" class="userhref"><span class="h2Font messageName">张某某</span></a><em class="authiconNew" title="科袖认证专家"></em>'+reply+'<span class="commenttime" style="float:right;">'+commenTime(data[i].createTime)+'</span></p>';
  105. itemlist += '<p class="h2Font messageContent">'+data[i].cnt+'</p>';
  106. itemlist += '<div class="operateSpan">'
  107. itemlist += '<span class="dzthumb dzthumbCan"><em class="hold-icon icon-zan"></em><em class="agreeCount" style="margin-left: 6px;">'+data[i].agreeCount+'</em></span>'
  108. itemlist += '<span class="callBack">回复</span>'
  109. itemlist += '<span class="messageDel displayNone">删除</span></div>';
  110. itemlist += '<div class="displayNone replyLeword"><textarea class="txtArea"></textarea><p class="pTxt"><span class="qCancel">取消</span><button class="hReply btnModel" disabled>回复</button></p></div></div></li>';
  111. $itemlist = $(itemlist);
  112. selector.append($itemlist);
  113. $itemlist.attr('data-obj',JSON.stringify(data[i]));
  114. if(id == data[i].sender) {
  115. $itemlist.find(".dzthumb").removeClass("dzthumbCan");
  116. $itemlist.find(".messageDel").removeClass("displayNone").end().find(".callBack").hide();
  117. }
  118. if(data[i].reciver) {
  119. self.userInfo(data[i].sender, $itemlist, 0);
  120. self.userInfo(data[i].reciver, $itemlist, 1)
  121. } else {
  122. self.userInfo(data[i].sender, $itemlist, 0);
  123. }
  124. if(data[i].agreeCount)
  125. self.referThup(data[i].id, $itemlist);
  126. }
  127. }
  128. LeaveWord.prototype.userInfo = function(uId, li, parNum) {
  129. ajaxRequist("/ajax/professor/editBaseInfo/" + uId, {}, "GET", function($data) {
  130. if(parNum == 0) {
  131. if($data.hasHeadImage == 1) {
  132. li.find(".useHead")[0].style.backgroundImage = "url(../images/head/" + $data.id + "_l.jpg" + ")";
  133. }
  134. li.find("textarea").attr("placeholder","回复 "+$data.name+":")
  135. }
  136. var userType = autho($data.authType, $data.orgAuth, $data.authStatus);
  137. li.find(".messageName").eq(parNum).html($data.name).end().end().find(".authiconNew").eq(parNum).addClass(userType.sty).attr("title",userType.title);
  138. })
  139. }
  140. LeaveWord.prototype.size = function() {
  141. if(this.val().length > 200) {
  142. $.MsgBox.Alert('提示', '留言不得超过200个字');
  143. return false;
  144. }
  145. return true;
  146. }
  147. LeaveWord.prototype.topLw = function($this) {
  148. var self = this;
  149. if(!self.size.call($($this).siblings(".msgContbox").find("textarea")) ){
  150. return;
  151. }
  152. $.ajax({
  153. url:"/ajax/leavemsg",
  154. data: {
  155. cnt: $($this).siblings(".msgContbox").find("textarea").val(),
  156. refId: $($this).data("ouse").sid,
  157. refType: $($this).data("ouse").stype,
  158. sender: $.cookie('userid'),
  159. uname: $.cookie('userName')
  160. },
  161. dataType: 'json',
  162. type: "POST",
  163. beforeSend: function() {
  164. $(".list-hold-list .ifLoginOn input").attr("disabled","true");
  165. },
  166. traditional: true,
  167. success: function (data) {
  168. if (data.success) {
  169. $($this).siblings(".msgContbox").find("textarea").val("").siblings(".msgconNum").find("em").text(0);
  170. ajaxRequist("/ajax/leavemsg/qo", {id: data.data}, "GET", function (data) {
  171. self.topHtml($($this).parents(".ifLogin").siblings(".commentsArea").find("ul"), [data])
  172. })
  173. }
  174. }
  175. });
  176. }
  177. LeaveWord.prototype.autoGrow=function(){
  178. document.getElementById("tt").style.width=this.scrollWidth+"px";
  179. document.getElementById("tt").value=this.value;
  180. this.style.height=this.scrollHeight+"px";
  181. }
  182. LeaveWord.prototype.bindEvent = function() {
  183. var self = this;
  184. $(".list-hold-list").on('click',".ifLogin input",function() {
  185. if(!lgin()) {
  186. return;
  187. }
  188. self.topLw(this);
  189. self.LwordTotal($(this),$(this).data("ouse"));
  190. });
  191. $(".list-hold-list").on("click", ".commentList li", function(e) {
  192. if(!lgin()) {
  193. return;
  194. }
  195. var obj=JSON.parse($(this).attr("data-obj")),
  196. target=e.target;
  197. switch (target.className){
  198. case "dzthumb dzthumbCan":self.thub.call(target, obj.id,obj.agreeCount);
  199. break;
  200. case "callBack":self.LwordBack(target, obj);
  201. break;
  202. case "messageDel":self.LwordDel(target, obj);
  203. break;
  204. case "hReply btnModel":self.replyLword(target,obj)
  205. break;
  206. case "qCancel": $(target).parent().siblings("textarea").val("").parents(".replyLeword").addClass("displayNone").siblings(".operateSpan").removeClass("displayNone");
  207. $(target).parent().siblings("textarea").css("height",'38px');
  208. break;
  209. }
  210. });
  211. $(".list-hold-list").on("click", ".answerWord .js-load-more", function(e) {
  212. var $obj=$(this).data('obj');
  213. self.init($(this).siblings("ul"),{sid: $obj.sid,stype: $obj.sType,time: $obj.time,id: $obj.id});
  214. })
  215. $(".list-hold-list").on("input",".ifLogin textarea",function(){
  216. if($.trim($(this).val()).length>0) {
  217. $(this).siblings(".msgconNum").find("em").text($(this).val().length).parents(".msgContbox").siblings("input").removeAttr("disabled");
  218. }else{
  219. $(this).parents(".msgContbox").siblings("input").attr("disabled","true");
  220. }
  221. })
  222. $(".list-hold-list").on("input", ".commentList textarea", function(e) {
  223. if($.trim($(this).val()).length>0) {
  224. $(this).siblings().find(".btnModel").removeAttr("disabled");
  225. self.autoGrow.call(this);
  226. }else{
  227. $(this).siblings().find(".btnModel").attr("disabled","true");
  228. }
  229. })
  230. }
  231. LeaveWord.prototype.referThup = function(lid, li, num) {
  232. ajaxRequist("/ajax/leavemsg/agree", {
  233. id: lid,
  234. uid: $.cookie('userid')
  235. }, "GET", function(data) {
  236. if(data) {
  237. li.find(".dzthumbCan").addClass("dzthumbed");
  238. }
  239. })
  240. }
  241. LeaveWord.prototype.thub = function(lid,num) {
  242. var self = this;
  243. ajaxRequist("/ajax/leavemsg/agree", {
  244. id: lid,
  245. uid: $.cookie('userid'),
  246. uname: $.cookie('userName')
  247. }, "POST", function(data) {
  248. $(self).addClass('dzthumbed').find(".agreeCount").html(num+1)
  249. })
  250. }
  251. LeaveWord.prototype.replyLword = function( $th,lid) {
  252. var self = this;
  253. if(!self.size.call($($th).parents(".pTxt").siblings("textarea")) ){
  254. return;
  255. }
  256. ajaxRequist("/ajax/leavemsg/reply", {
  257. cnt: $($th).parents(".pTxt").siblings("textarea").val(),
  258. id: lid.id,
  259. uid: $.cookie('userid'),
  260. uname: $.cookie('userName')
  261. }, "POST", function(data) {
  262. $($th).parents(".pTxt").siblings("textarea").val("").parents(".replyLeword").addClass("displayNone").siblings(".operateSpan").removeClass("displayNone")
  263. ajaxRequist("/ajax/leavemsg/qo", {id:data},"GET",function(data) {
  264. self.topHtml($($th).parents(".commentList"),[data])
  265. })
  266. self.LwordTotal($($th),{sid:lid.refId,stype:lid.refType});
  267. })
  268. }
  269. LeaveWord.prototype.LwordDel = function($this, lid) {
  270. var self = this;
  271. ajaxRequist("/ajax/leavemsg/del", {
  272. id: lid.id
  273. }, "GET", function(data) {
  274. self.LwordTotal($($this).parents(".commentList"),{sid:lid.refId,stype:lid.refType});
  275. $($this).parents(".li-item").remove();
  276. })
  277. }
  278. LeaveWord.prototype.LwordBack = function($this, lid) {
  279. $(".replyLeword").each(function(item){
  280. $(".replyLeword").eq(item).addClass("displayNone").siblings(".operateSpan").removeClass("displayNone");
  281. })
  282. $($this).parents(".operateSpan").addClass("displayNone").siblings(".replyLeword").removeClass("displayNone")
  283. }
  284. LeaveWord.prototype.LwordTotal = function($th,lid) {
  285. var self = this;
  286. ajaxRequist("/ajax/leavemsg/count", {
  287. sid: lid.sid,
  288. stype: lid.stype
  289. }, "get", function($data) {
  290. $th.parents(".list-qa").find(".leaveMsgCount").text($data);
  291. $th.parents(".list-qa").find(".con-kong").addClass("displayNone");
  292. if($data==0) {
  293. $th.parents(".list-qa").find(".con-kong").removeClass("displayNone");
  294. }
  295. })
  296. }
  297. var module = {
  298. lWord: new LeaveWord()
  299. }
  300. window.module = module;
  301. })(window)