li 7 years ago
parent
commit
2ef268156f
4 changed files with 265 additions and 153 deletions
  1. 2 1
      articalShow.html
  2. 5 1
      css/leaveWord.css
  3. 1 151
      js/articalShow.js
  4. 257 0
      js/leaveWord.js

+ 2 - 1
articalShow.html

@ -10,9 +10,9 @@
10 10
<link href="css/swiper.min.css" rel="stylesheet">
11 11
<link type="text/css" href="css/common.css" rel="stylesheet">
12 12
<link type="text/css" href="css/genindex.css" rel="stylesheet">
13
<link type="text/css" href="css/leaveWord.css" rel="stylesheet">
13 14
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
14 15
<script type="text/javascript" src="js/public/swiper.min.js"></script>
15

16 16
</head>
17 17

18 18
<body>
@ -202,6 +202,7 @@
202 202
<script type="text/javascript" src="js/common.js"></script>
203 203
<script type="text/javascript" src="js/scrollfix.js"></script>
204 204
<script type="text/javascript" src="js/weixinshare/qrcode.min.js"></script>
205
<script type="text/javascript" src="js/leaveWord.js"></script>
205 206
<script type="text/javascript" src="js/articalShow.js"></script>
206 207
<script type="text/javascript" src="js/quickLogin.js"></script>
207 208
<script type="text/javascript">

+ 5 - 1
css/leaveWord.css

@ -21,4 +21,8 @@
21 21
.qCancel{color: #8590a6;cursor: pointer;}
22 22
.hReply{padding: 5px 10px;background-color: #ff9900;color: #fff;margin-left: 10px;cursor: pointer;outline:none;border:none;}
23 23
.replyLeword {margin-top:10px;}
24
.dzthumb{position:relative;top:7px;display: inline-block;padding: 15px 25px 15px 25px;font-size: 16px;background: url(../images/g_article_icon_dianzan_nor.png) no-repeat 18px center;background-size: 16px 16px;background-color: #ff9900;cursor: pointer;opacity: .9;border-radius: 5px;}
24
.noMy{font-style:normal;}
25
.dzthumb{position:relative;top:7px;display: inline-block;padding: 15px 25px 15px 25px;font-size: 16px;background: url(../images/g_article_icon_dianzan_nor.png) no-repeat 18px center;background-size: 16px 16px;background-color: #ff9900;cursor: pointer;opacity: .9;border-radius: 5px;}
26
.dzthumb.dzthumbed{background-color:#e0e0e0;}
27
.replyLeword textarea {padding-top:5px;}
28
.replyLeword textarea:focus{border-color:#ff9900;}

+ 1 - 151
js/articalShow.js

@ -1,5 +1,6 @@
1 1
/*文章预览*/
2 2
var articleId = GetQueryString("articleId");
3
module.lWord(articleId,1);
3 4
if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){
4 5
 	location.href="http://" + window.location.host + "/e/a.html?id="+articleId;
5 6
}
@ -715,158 +716,7 @@ function pageViewsVal(){
715 716
		}
716 717
	});
717 718
}
718
ArticleMessagesNumbe();
719
//文章留言条数
720
function ArticleMessagesNumbe(){
721
	$.ajax({
722
		"url" : "/ajax/leaveWord/lwCount",
723
		"type" :  "GET" ,
724
		"dataType" : "json",
725
		"data" :{"articleId":articleId},
726
		"success" : function(data) {
727
			console.log(data);
728
			if (data.success){
729
				$(".message").text(data.data);
730
			}
731
		},
732
		"error":function(){
733
			$.MsgBox.Alert('提示','链接服务器超时')
734
		}
735
	});
736
}
737
	
738
/*留言模块*/
739
limitObj(".msgCont",200)
740

741
$("#meSendtt").on("click", function() {
742
	articleMsg();
743
})
744
//查看更多留言
745
$("#moreArtical").on("click",function(){
746
	vcreateTime = $(".commentList li").last().attr("data-time");
747
	orderKey = $(".commentList li").last().attr("data-key");
748
	message(5,1);
749
})
750
//删除留言
751
$(".commentList").on("click",".messageDel",function(){
752
	var commenid = $(this).attr("data-id");
753
	articledel(commenid)
754
})
755

756
//发布留言
757
function articleMsg() {
758
	$.ajax({
759
		url:"/ajax/leaveWord",
760
		dataType: 'json', //数据格式类型
761
		type: 'POST', //http请求类型
762
		data: {
763
			"articleId": articleId,
764
			"sender": userid,
765
			"content": $(".msgCont").val(),
766
		},
767
		timeout: 10000, //超时设置
768
		success: function(data) {
769
			var $info = data.data || {};
770
			if(data.success && data.data) {
771
				message(5,2);
772
			}
773
			$(".msgCont").val("");
774
		},
775
		error: function() {
776
			$.MsgBox.Alert('提示', '服务器请求失败')
777
		}
778
	});
779
}
780 719

781
message(5,2);
782
function message(rows,num) {
783
	if(num==1){
784
		var data = {"articleId": articleId,"createTime": vcreateTime,"orderKey": orderKey,"rows": rows}	
785
	}else{
786
		var data = {"articleId": articleId,"rows": rows}	
787
	}
788
	$.ajax({
789
		url: "/ajax/leaveWord/ql",
790
		dataType: 'json', //数据格式类型
791
		type: 'GET', //http请求类型
792
		data: data,
793
		timeout: 10000, //超时设置
794
		success: function(data) {
795
			if(data.success) {
796
				 if(data.data != ""){
797
				 	if(num==2){
798
						$(".commentList").html("");	
799
					}
800
					if(data.data.length > 4){
801
						$("#moreArtical").removeClass("displayNone");
802
					}else{
803
						$("#moreArtical").addClass("displayNone");
804
					}
805
					for(var i = 0; i < data.data.length; i++) {
806
						var itemlist = '<li class="flexCenter" data-time="" data-key="">';
807
							itemlist += '<a href class="userhref"> <div class="madiaHead useHead useHeadMsg"></div></a>';
808
							itemlist += '<div class="madiaInfo">';
809
							itemlist += '<p><a href class="userhref"><span class="h1Font messageName">张某某</span></a><em class="authiconNew" title="科袖认证专家"></em><span class="commenttime">9月30号 12:00</span></p>';
810
							itemlist += '<p class="h2Font messageContent">sdfsdfs</p>';
811
							itemlist += '<div class="operateSpan"><span class="callBack">回复</span><span class="messageDel">删除</span></div>';
812
							itemlist += '</div></li>';
813
							$itemlist = $(itemlist);
814
							$(".commentList").append($itemlist);
815
							var datalist = data.data[i];
816
							$itemlist.find(".messageName").text(datalist.professor.name);
817
							$itemlist.find(".messageContent").text(datalist.content);
818
							var userType = autho(datalist.professor.authType, datalist.professor.orgAuth, datalist.professor.authStatus);
819
								$itemlist.find(".authiconNew").attr("title", userType.title);
820
								$itemlist.find(".authiconNew").addClass(userType.sty);
821
							if(datalist.professor.hasHeadImage==1) {
822
								$itemlist.find(".useHeadMsg").attr("style", "background-image: url(/images/head/" + datalist.professor.id + "_l.jpg);");
823
							}	
824
							if(datalist.professor.id==userid){
825
								$itemlist.find(".messageDel").show();
826
							}
827
							$itemlist.attr("data-time", datalist.createTime);
828
							$itemlist.attr("data-key", datalist.orderKey);
829
							$itemlist.find(".messageDel").attr("data-id", datalist.id);
830
							$itemlist.find(".userhref").attr("href", "userInforShow.html?professorId="+datalist.professor.id);
831
							var createtime = datalist.createTime;
832
							$itemlist.find(".commenttime").text(commenTime(createtime));
833
					}
834
				 }else{
835
				 	if(num==2){
836
						$(".commentList").html("");	
837
					}else{
838
						$("#moreArtical").addClass("displayNone");
839
					}
840
					
841
				 }
842
			}
843
		},
844
		error: function() {
845
			$.MsgBox.Alert('提示', '服务器请求失败')
846
		}
847
	});
848
}
849
	
850
//删除自己的留言
851
function articledel(commenid) {
852
	$.ajax({
853
		url:"/ajax/leaveWord/delete",
854
		dataType: 'json', //数据格式类型
855
		type: 'POST', //http请求类型
856
		data: {
857
			"id": commenid,
858
		},
859
		timeout: 10000, //超时设置
860
		success: function(data) {
861
			if(data.success) {
862
				message(5,2);
863
			}
864
		},
865
		error: function() {
866
			$.MsgBox.Alert('提示', '服务器请求失败')
867
		}
868
	});
869
}	
870 720

871 721
window.onload=function(){
872 722
	pageViewsVal();//文章浏览量

+ 257 - 0
js/leaveWord.js

@ -0,0 +1,257 @@
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.sid = module.sid;
22
		self.stype = module.stype;
23
		self.init( {
24
			sid: self.sid,
25
			stype: self.stype,
26
			rows: 5
27
		});
28
		self.bindEvent();
29
		self.LwordTotal();
30
		self.addHtml();
31
	}
32

33
	function lgin() {
34
		if($.cookie('userid')) {
35
			return true;
36
		}
37
		location.href="login.html";
38
		return false;
39
	}
40
	LeaveWord.prototype.addHtml=function() {
41
		$("body").append('<textarea class="txtArea" id="tt" style="position:absolute;top:0;left:-999px;"></textarea>')
42
	}
43
	LeaveWord.prototype.init = function(obj) {
44
		var id = $.cookie('userid');
45
		var self = this;
46
		ajaxRequist("/ajax/leavemsg/subject",obj, "GET", function(data) {
47
			(data.length>4)?$("#moreArtical").removeClass("displayNone"):$("#moreArtical").addClass("displayNone");;
48
			if(data.length == 0) {
49
				return;
50
			}
51
			if(!self.id) {
52
				$(".commentList").html("");
53
			}
54
			for(var i = 0; i < data.length; i++) {
55
				var reply="";
56
				if(data[i].reciver) {
57
					reply = '<span style="margin:0px 10px;">回复 </span><a href="userInforShow.html?professorId='+data[i].reciver+'" class="userhref"><span class="h1Font messageName">张某某</span></a><em class="authiconNew" title="科袖认证专家"></em>'
58
				}
59
				var itemlist = '<li class="flexCenter">';
60
				itemlist += '<a href class="userhref"> <div class="madiaHead useHead useHeadMsg"></div></a>';
61
				itemlist += '<div class="madiaInfo">';
62
				itemlist += '<p><a href="userInforShow.html?professorId='+data[i].sender+'" class="userhref"><span class="h1Font messageName">张某某</span></a><em class="authiconNew" title="科袖认证专家"></em>'+reply+'<span class="commenttime" style="float:right;">'+commenTime(data[i].createTime)+'</span></p>';
63
				itemlist += '<p class="h2Font messageContent">'+data[i].cnt+'</p>';
64
				itemlist += '<div class="operateSpan"><em class="noMy"><span class="dzthumb"></span><span class="thNum">赞0</span><span class="callBack">回复</span></em><span class="messageDel displayNone">删除</span></div>';
65
				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>';
66
				$itemlist = $(itemlist);
67
				$(".commentList").append($itemlist); 
68
				$itemlist.attr('data-obj',JSON.stringify(data[i]));
69
				if(id == data[i].sender) {
70
					$itemlist.find(".messageDel").removeClass("displayNone").end().find(".noMy").hide();
71
				}
72
				if(data[i].reciver) {
73
					self.userInfo(data[i].sender, $itemlist, 0);
74
					self.userInfo(data[i].reciver, $itemlist, 1)
75
				} else {
76
					self.userInfo(data[i].sender, $itemlist, 0);
77
				}
78
				if(data[i].agreeCount)
79
					self.referThup(data[i].id, $itemlist, data[i].agreeCount);
80
			}
81
			self.time=data[data.length-1].createTime;
82
			self.id=data[data.length-1].id;
83
		})
84
	}
85
	LeaveWord.prototype.userInfo = function(uId, li, parNum) {
86
		ajaxRequist("/ajax/professor/editBaseInfo/" + uId, {}, "GET", function($data) {
87
			if(parNum == 0) {  
88
				if($data.hasHeadImage == 1) {
89
					li.find(".useHead")[0].style.backgroundImage = "url(../images/head/" + $data.id + "_l.jpg" + ")";
90
				}
91
				li.find("textarea").attr("placeholder","回复  "+$data.name+":")
92
			}
93
			var userType = autho($data.authType, $data.orgAuth, $data.authStatus);
94
			li.find(".messageName").eq(parNum).html($data.name).end().end().find(".authiconNew").eq(parNum).addClass(userType.sty).attr("title",userType.title);
95
		})
96
	}
97
	LeaveWord.prototype.size = function() {
98
		if(this.val().length > 200) {
99
			$.MsgBox.Alert('提示', '留言不得超过200个字');
100
			return false;
101
		}
102
		return true;
103
	}
104
	LeaveWord.prototype.topLw = function() {
105
		var self = this;
106
		if(!self.size.call($(".msgCont")) ){
107
			return;
108
		}
109
		ajaxRequist("/ajax/leavemsg", {
110
			cnt: $(".msgCont").val(),
111
			refId: self.sid,
112
			refType: self.stype,
113
			sender: $.cookie('userid'),
114
			uname: $.cookie('userName')
115
		}, "POST", function() {
116
			$(".msgCont").val("");
117
			if(self.id) {
118
				delete self.id;
119
				delete self.time;
120
			}
121
			self.init({
122
				sid: self.sid,
123
				stype: self.stype,
124
				rows: 5
125
			});
126
		})
127
	}
128
	LeaveWord.prototype.autoGrow=function(){
129
		document.getElementById("tt").style.width=this.scrollWidth+"px";
130
		document.getElementById("tt").value=this.value;
131
		this.style.height=document.getElementById("tt").scrollHeight+"px";
132
	}
133
	LeaveWord.prototype.bindEvent = function() {
134
		var self = this;
135
		$("#meSendtt").click(function() {
136
			if(!lgin()) {
137
				return;
138
			}
139
			self.topLw();
140
		});
141
		$(".commentList").on("click", "li", function(e) {
142
			if(!lgin()) {
143
				return;
144
			}
145
			var obj=JSON.parse($(this).attr("data-obj")),
146
			target=e.target;
147
			switch (target.className){
148
				case "dzthumb":self.thub.call(target, obj.id,obj.agreeCount);
149
					break;
150
				case "callBack":$(target).parents(".operateSpan").addClass("displayNone").siblings(".replyLeword").removeClass("displayNone");
151
					break;
152
				case "messageDel":self.LwordDel(target, obj.id);
153
					break;
154
				case "hReply btnModel":self.replyLword(target,obj.id)
155
					break;
156
				case "qCancel": $(target).parent().siblings("textarea").val("").parents(".replyLeword").addClass("displayNone").siblings(".operateSpan").removeClass("displayNone")
157
					break;
158
			}
159
		});
160
		$(".msgCont").on("input",function(){
161
			if($.trim($(this).val()).length>0) {
162
					$("#meSendtt").removeAttr("disabled");
163
				}else{
164
					$("#meSendtt").attr("disabled","disabled");
165
				}
166
		})
167
		$(".commentList").on("input", "textarea", function(e) {
168
				if($.trim($(this).val()).length>0) {
169
					$(this).siblings().find(".btnModel").removeAttr("disabled");
170
					self.autoGrow.call(this);
171
				}else{
172
					$(this).siblings().find(".btnModel").attr("disabled","disabled");
173
				}
174
		})
175
		$("#moreArtical").click(function(){
176
			self.init({
177
				sid: self.sid,
178
				stype: self.stype,
179
				time: self.time,
180
				id: self.id,
181
				rows: 5
182
			});
183
		})
184
	}
185
	LeaveWord.prototype.referThup = function(lid, li, num) {
186
		ajaxRequist("/ajax/leavemsg/agree", { 
187
			id: lid,
188
			uid: $.cookie('userid')
189
		}, "GET", function(data) {
190
			if(data) {
191
				li.find(".thNum").html("已赞" + num).end().find(".dzthumb").addClass("dzthumbed").css("cursor","auto");
192
			}
193
		})
194
	}
195
	LeaveWord.prototype.thub = function(lid,num) {
196
		var self = this;
197
		ajaxRequist("/ajax/leavemsg/agree", {
198
			id: lid,
199
			uid: $.cookie('userid'),
200
			uname: $.cookie('userName')
201
		}, "POST", function(data) {
202
			$(self).addClass('dzthumbed').siblings(".thNum").html("已赞"+(num+1))// + (Number(self.getAttribute("data-num")) + 1);
203
		})
204
	}
205
	LeaveWord.prototype.replyLword = function( $th,lid) {
206
		var self = this;
207
		if(!self.size.call($($th).parents(".pTxt").siblings("textarea")) ){
208
			return;
209
		}
210
		ajaxRequist("/ajax/leavemsg/reply", {
211
			cnt: $($th).parents(".pTxt").siblings("textarea").val(),
212
			id: lid,
213
			uid: $.cookie('userid'),
214
			uname: $.cookie('userName')
215
		}, "POST", function(data) {
216
			$($th).parents(".pTxt").siblings("textarea").val("").parents(".replyLeword").addClass("displayNone").siblings(".operateSpan").removeClass("displayNone")
217
			if(self.id) {
218
				delete self.id;
219
				delete self.time;
220
			}
221
			self.init({
222
				sid: self.sid,
223
				stype: self.stype,
224
				rows: 5
225
			});
226
			self.LwordTotal();
227
		})
228
	}
229
	LeaveWord.prototype.LwordDel = function($this, lid) {
230
		var self = this;
231
		ajaxRequist("/ajax/leavemsg/del", {
232
			id: lid
233
		}, "GET", function(data) {
234
			$($this).parents("li").remove();
235
			self.LwordTotal();
236
		})
237
	}
238
	LeaveWord.prototype.LwordTotal = function() {
239
		var self = this;
240
		ajaxRequist("/ajax/leavemsg/count", {
241
			sid: self.sid,
242
			stype: self.stype
243
		}, "get", function($data) {
244
			$(".message").text($data);
245
		})
246
	}
247

248
	var module = {
249
		lWord: function(sid, stype) {
250
			this.sid = sid;
251
			this.stype = stype;
252
			var lw = new LeaveWord();
253
			this.init = lw.init;
254
		}
255
	}
256
	window.module = module;
257
})(window)