evaluate.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. $(document.body).ready(function() {
  2. var isRepeat = false,
  3. score = 5,
  4. tag = "",
  5. solved = 1,
  6. remar = "";
  7. var param = {};
  8. var humanSetInnerStepOneHtml = function() {
  9. $aLi = $("#star li");
  10. $(".js-solved").addClass("solveActive");
  11. fnPoint(score);
  12. $(".js-evaluateTip").html(config[score - 1].scoreExplain);
  13. var iStar = 0;
  14. for (i = 1; i <= $aLi.length; i++) {
  15. $aLi[i - 1].index = i;
  16. //鼠标移过显示分数
  17. $aLi[i - 1].onmouseover = function() {
  18. fnPoint(this.index);
  19. };
  20. //鼠标离开后恢复上次评分
  21. $aLi[i - 1].onmouseout = function() {
  22. fnPoint(this.index);
  23. };
  24. //点击后进行评分处理
  25. $($aLi[i - 1]).bind("click", function() {
  26. iStar = this.index;
  27. switch (iStar) {
  28. case 1: //一星
  29. case 2: //二星
  30. case 3: //三星
  31. case 4: //四星
  32. score = iStar;
  33. humanSetInnerStepTwoHtml(iStar);
  34. $(".js-evaluateDetail").css("display", "block");
  35. break;
  36. case 5: //五星
  37. score = 5;
  38. $(".js-evaluateDetail").css("display", "none");
  39. break;
  40. };
  41. $(".js-evaluateTip").html(config[score - 1].scoreExplain);
  42. });
  43. };
  44. if (config[0].isQuestionFlag) {
  45. $(".js-operateType").html('<p class="operateTypeTitle">请问客服是否解决了您的问题?</p>' +
  46. '<div class="operateTypeBtn">' +
  47. '<p class="solve solved js-solved solveActive"><span></span>已解决</p>' +
  48. '<p class="solve unSolved js-unSolved" style="margin-left:25px;"><span></span>未解决</p>' +
  49. '</div>');
  50. }
  51. };
  52. var humanSetInnerStepTwoHtml = function() {
  53. var list = [];
  54. if (config[score - 1].labelName) {
  55. list = config[score - 1].labelName.split(",");
  56. }
  57. //去掉空标签
  58. for (var i = 0; i < list.length; i++) {
  59. if (list[i] == "") {
  60. list.splice(i, 1);
  61. }
  62. };
  63. var $li = "";
  64. for (var i = 0; i < list.length; i++) {
  65. if (i % 2 == 0) {
  66. $li += '<span class="tag js-situationSpan" style="float:left;">' + list[i] + '</span>';
  67. } else {
  68. $li += '<span class="tag js-situationSpan" style="float:right;">' + list[i] + '</span>';
  69. }
  70. };
  71. if (list.length > 0) {
  72. $(".js-h2").css('display',"block");
  73. } else {
  74. $(".js-h2").css('display',"none");
  75. }
  76. $(".js-situation").html($li);
  77. $(".js-situationSpan").click(function() {
  78. if ($(this).hasClass("active")) {
  79. $(this).css({ "background": "#fff", "border": "1px solid #c4cdcc", "color": "#686d70" });
  80. $(this).removeClass("active")
  81. } else {
  82. $(this).css({ "background": "#0daeaf", "border": "1px solid #0daeaf", "color": "#fff" });
  83. $(this).addClass("active")
  84. }
  85. });
  86. //alert(!!config[score - 1].inputLanguage);
  87. if (!!config[score - 1].inputLanguage) {
  88. $(".js-evaluateInner").attr("placeholder", config[score - 1].isInputMust ? config[score - 1].inputLanguage + '(必填)' : config[score - 1].inputLanguage + '(选填)');
  89. } else {
  90. $(".js-evaluateInner").attr("placeholder", config[score - 1].isInputMust ? '欢迎给我们服务提建议~(必填)' : '欢迎给我们服务提建议~(选填)');
  91. }
  92. };
  93. var EvaluateAjaxHandler = function() {
  94. if (isRepeat == false) {
  95. isRepeat = true;
  96. var tagArr = [],
  97. tagNum = $(".js-situationSpan").length;
  98. $(".js-situationSpan").each(function() {
  99. var _val = $(this).html();
  100. if ($(this).hasClass("active")) {
  101. tagArr.push(_val)
  102. }
  103. });
  104. if (tagArr.length == 0 && config[score - 1].isTagMust && score != 5 && tagNum > 0) {
  105. alert('请选择评价标签');
  106. setTimeout(function() {
  107. isRepeat = false;
  108. }, 3000);
  109. return;
  110. };
  111. tag = tagArr.join(",");
  112. //评价详情是否为必选
  113. remark = $(".js-evaluateInner").val() || '';
  114. if (remark == "" && config[score - 1].isInputMust && score != 5) {
  115. alert('请填写评价详情');
  116. setTimeout(function() {
  117. isRepeat = false;
  118. }, 3000)
  119. return;
  120. }
  121. if (config[0].isQuestionFlag == 1) {
  122. if ($(".js-solved").hasClass("solveActive")) {
  123. solved = 1;
  124. } else {
  125. solved = 0;
  126. }
  127. }else{
  128. solved = -1;
  129. };
  130. $.ajax({
  131. type: "post",
  132. url: "/chat/user/comment.action",
  133. dataType: "json",
  134. data: {
  135. cid: param["cid"],
  136. visitorId: param["uid"],
  137. score: score,
  138. tag: tag,
  139. solved: solved,
  140. remark: remark,
  141. type: 1,
  142. //0,邀请评价,1为主动评价
  143. commentType: param["commentType"]
  144. },
  145. success: function(req) {
  146. if (req.status === 1) {
  147. //window.open('./evaSuccess.html');
  148. window.location.href = './evaSuccess.html';
  149. } else {
  150. alert("提交失败");
  151. }
  152. },
  153. //请检查网络链接
  154. error: function() {
  155. alert("提交失败,请检查网络链接");
  156. }
  157. });
  158. setTimeout(function() {
  159. isRepeat = false;
  160. }, 3000)
  161. }
  162. };
  163. var fnPoint = function(iArg) { //alert(iArg);
  164. //分数赋值
  165. for (var i = 0; i < $aLi.length; i++) {
  166. $aLi[i].className = i < iArg ? "on" : "";
  167. }
  168. };
  169. var getQueryParam = function(href) {
  170. href = href || document.location.href;
  171. var queryString = href.substring(href.lastIndexOf("?") + 1);
  172. if (queryString.lastIndexOf("#") >= 0) {
  173. queryString = queryString.substring(0, queryString.lastIndexOf("#"));
  174. };
  175. var list = queryString.split("&");
  176. for (var i = 0; i < list.length; i++) {
  177. var item = list[i];
  178. try {
  179. var key = item.substring(0, item.indexOf("="));
  180. var value = item.substring(item.indexOf("=") + 1);
  181. if (key.length == 0) {
  182. continue;
  183. }
  184. if (/^-?(\d+)(\.\d+)?$/.test(value)) {
  185. if (("" + value).length > 10) {
  186. param[key] = "" + value;
  187. } else {
  188. param[key] = Number(value);
  189. }
  190. } else if (value === 'true') {
  191. param[key] = true;
  192. } else if (value === 'false') {
  193. param[key] = false;
  194. } else {
  195. param[key] = decodeUrl(value);
  196. }
  197. } catch (e) {
  198. continue;
  199. }
  200. }
  201. return param;
  202. };
  203. var decodeUrl = function(str) {
  204. if (typeof str === 'string') {
  205. return decodeURIComponent(str);
  206. } else {
  207. return undefined;
  208. }
  209. };
  210. var commitBefore = function() {
  211. $.ajax({
  212. type: "post",
  213. url: "/chat/user/isComment.action",
  214. dataType: "json",
  215. data: {
  216. cid: param["cid"],
  217. uid: param["uid"],
  218. type: 1
  219. },
  220. success: function(req) {
  221. var isEvaluated = req.isComment;
  222. //alert(isEvaluated);
  223. //1表示评论过
  224. if (isEvaluated == 1) {
  225. alert("您已评价,不能重复提交");
  226. } else if (isEvaluated == 0) { //0表示说过话没有评论过
  227. EvaluateAjaxHandler();
  228. } else { //-1表示用户没有说过话
  229. alert("评价页面过期失效啦,欢迎下次及时进行评价哦~~");
  230. //微信无此种情况
  231. }
  232. }
  233. })
  234. };
  235. var bindListener = function() {
  236. $(".js-submit").on("click", commitBefore);
  237. $(document.body).delegate(".js-solved", "click", function() {
  238. if (!$(this).hasClass("solveActive")) {
  239. $(this).addClass("solveActive");
  240. $(".js-unSolved").removeClass("unsolveActive");
  241. }
  242. });
  243. $(document.body).delegate(".js-unSolved", "click", function() {
  244. if (!$(this).hasClass("unsolveActive")) {
  245. $(this).addClass("unsolveActive");
  246. $(".js-solved").removeClass("solveActive");
  247. }
  248. });
  249. $(window).scroll(function() {
  250. $(".js-submit").css("bottom", 0)
  251. })
  252. };
  253. var parseDOM = function() {
  254. $body = $(document.body);
  255. };
  256. var initFunction = function() {
  257. parseDOM();
  258. humanSetInnerStepOneHtml();
  259. bindListener();
  260. };
  261. var initConfig = function() {
  262. $.ajax({
  263. type: "get",
  264. url: "/chat/user/satisfactionMessage.action",
  265. dataType: "json",
  266. data: {
  267. uid: param["uid"]
  268. },
  269. success: function(req) {
  270. if (req.status === 1) {
  271. config = req.data;
  272. initFunction();
  273. $('.evabody').css("background", "none");
  274. $('.js-evamode').css("display", "block");
  275. $('.js-submit').css("display", "block");
  276. }
  277. },
  278. //请检查网络链接
  279. error: function() {
  280. //showTip.show('请检查网络链接');
  281. }
  282. });
  283. };
  284. var init = function() {
  285. getQueryParam();
  286. // console.log(param["cid"]);
  287. if (isRepeat == false) {
  288. isRepeat = true;
  289. $.ajax({
  290. type: "post",
  291. url: "/chat/user/isComment.action",
  292. dataType: "json",
  293. data: {
  294. cid: param["cid"],
  295. uid: param["uid"],
  296. type: 1
  297. },
  298. success: function(req) {
  299. var isEvaluated = req.isComment;
  300. //console.log(req.isComment);
  301. //alert(isEvaluated);
  302. //1表示评论过
  303. if (isEvaluated == 1) {
  304. window.location.href = './evaSuccess.html';
  305. } else if (isEvaluated == 0) { //0表示说过话没有评论过
  306. initConfig();
  307. } else { //-1表示用户没有说过话
  308. alert("评价页面过期失效啦,欢迎下次及时进行评价哦~~");
  309. //微信无此种情况
  310. }
  311. }
  312. });
  313. //防止快速点击
  314. setTimeout(function() {
  315. isRepeat = false;
  316. }, 1000)
  317. }
  318. };
  319. init();
  320. })