郑州颐和随访系统UI

LookMessage.js 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. /**
  2. * 回访 问卷信息
  3. * */
  4. var wid = helper.request.queryString("oid");
  5. $(document).ready(function() {
  6. if(wid != null && wid != undefined && wid != "") {
  7. getWorkOrderInfo(); //获取工单信息
  8. GetHJJG(); //获取呼叫结果
  9. getQuestionPager(); //获取问卷
  10. }
  11. $('#btn_submit').on('click', submitPages);
  12. //点击电话号码外呼
  13. $("#CallOut").click(function(event) {
  14. if($("#visit_tel").text()) {
  15. calloutopt($("#visit_tel").text());
  16. }
  17. });
  18. });
  19. //外呼
  20. function calloutopt(telphone) {
  21. event.stopPropagation();
  22. if(telphone) {
  23. $.ajax({
  24. type: "get",
  25. url: huayi.config.callcenter_url + "CallOutOpt/GetCallOutprefix",
  26. async: true,
  27. dataType: 'json',
  28. data: {
  29. token: $.cookie("token"),
  30. phone: telphone
  31. },
  32. success: function(result) {
  33. if(result.state.toLowerCase() == "success") {
  34. var guid = uuid();
  35. $("#TelCode").val(guid);
  36. top.obj.Type = "MakeCall";
  37. top.obj.DestinationNumber = result.data.phone;
  38. top.obj.Header = result.data.fix;
  39. top.obj.TaskType = "1"; //0:拨号外呼;1:问卷外呼;
  40. top.obj.TaskPhoneID = $("#F_Id").val(); //回访的电话工单ID
  41. top.Send();
  42. }
  43. }
  44. });
  45. }
  46. }
  47. //提交问卷
  48. function submitPages() {
  49. if(!$('input[name="check"]:checked').val()) {
  50. layer.confirm('呼叫结果必须选择!', {
  51. icon: 2,
  52. btn: ['确定']
  53. });
  54. return;
  55. }
  56. var ans = getAnswers(); //获取答案
  57. //请求
  58. $.ajax({
  59. type: "POST",
  60. url: huayi.config.callcenter_url + "CallOut/AddAnswers",
  61. dataType: 'json',
  62. data: {
  63. cusid: $("#F_CusID").val(), //客户档案ID
  64. workorderid: wid, // 是 string 工单来源
  65. ans: ans, //单选格式:试题Id_选项Id|总分(选项最大分数)|得分score|选项title
  66. hjjgid: $('input[name="check"]:checked').val(), //呼叫结果ID
  67. token: $.cookie("token")
  68. },
  69. async: true,
  70. success: function(data) {
  71. if(data.state === "success") {
  72. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  73. parent.layer.close(index); //再执行关闭
  74. parent.$('#workorderlist').bootstrapTable('refresh');
  75. parent.layer.msg('提交成功');
  76. }
  77. },
  78. });
  79. }
  80. //获取问卷
  81. function getQuestionPager() {
  82. $(".tbody").empty();
  83. $.ajax({
  84. type: "get",
  85. url: huayi.config.callcenter_url + "QuestionAnswer/GetQuestionPager",
  86. async: true,
  87. dataType: "json",
  88. data: {
  89. token: $.cookie("token"),
  90. },
  91. success: function(data) {
  92. if(data.state.toLowerCase() == 'success') {
  93. var questions = data.data;
  94. var html = '';
  95. if(questions && questions.length > 0) {
  96. for(var i = 0; i < questions.length; i++) {
  97. html += '<li>';
  98. html += '<div class="Back">';
  99. html += '<h3 class="size-14 QuesTitle">' + questions[i].title + '</h3>';
  100. html += '</div>';
  101. //选项
  102. var quesitems = questions[i].quesitems;
  103. if(quesitems && quesitems.length > 0) { //单选
  104. html += '<div class="radio clearfix" id="radios_' + i + '">';
  105. html += '<ul class="Ul">'
  106. for(var j = 0; j < quesitems.length; j++) {
  107. html += '<li>'
  108. html += '<label style="font-weight: normal;">'
  109. html += '' + (j + 1) + '.';
  110. html += '<input type="radio" class="quesitems" value="' + quesitems[j].id + '" name="radio_' + questions[i].id + '"><span>' + quesitems[j].title + ' (' + quesitems[j].score + '分)</span></label>'
  111. html += '</li>'
  112. }
  113. html += '</ul>'
  114. html += '</div>'
  115. html += '</li>'
  116. }
  117. }
  118. $(html).appendTo("#questionBody");
  119. }
  120. }
  121. }
  122. });
  123. }
  124. //获取工单信息
  125. function getWorkOrderInfo() {
  126. $.getJSON(huayi.config.callcenter_url + 'WorkOrder/GetWorkOrder', {
  127. "orderid": wid,
  128. "token": $.cookie("token")
  129. }, function(result) {
  130. if(result.state.toLowerCase() == "success") {
  131. if(result.data.data && result.data.data.length > 0) {
  132. var data = result.data.data[0];
  133. $("#F_CusID").val(data.CustomerID), //客户档案ID
  134. $("#F_Id").val(data.ID); //回访的电话工单ID
  135. $("#visit_name").text(data.Customer); //客户姓名
  136. $("#visit_tel").text(data.CustomerTel); //客户电话
  137. $('#visit_regin').text(data.areaname); //区域名称
  138. $('#visit_pro').text(data.proname); //项目名称
  139. $('#visit_floor').text(data.buildingname); //期号名称
  140. $('#visit_buildingnum').text(data.BuildingNum);// 否 string 楼号
  141. $('#visit_unitnum').text(data.UnitNum);// 否 string 单元
  142. $('#visit_room').text(data.Address); //房间号
  143. $("#visit_iseffective").html(formatterIsEffective(data.IsEffective)); //工单有效性
  144. $('#visit_otype').text(data.GDLXName); //工单类型
  145. $('#visit_state').html(formatterState(data.State)); //工单状态
  146. $("#visit_source").text(data.GDLYName); //工单来源
  147. $("#visit_ownerrelations").text(data.OwnerrelationsName); //房主关系
  148. $("#visit_customerresponse").text(data.OustomerResponseName); //客户反应
  149. if(data.TypeClass === 107) { //咨询
  150. $('.visit_complain').hide();
  151. } else if(data.TypeClass === 108) { //投诉
  152. $('.visit_complain').show();
  153. data.ComplaintDepartment = data.ComplaintDepartment === null ? '' : data.ComplaintDepartment;
  154. data.CustomerTypeName = data.CustomerTypeName === null ? '' : data.CustomerTypeName;
  155. $("#visit_fkdep").text(data.ComplaintDepartment + data.CustomerTypeName); //投诉类型
  156. if(data.ResponDept != "-1") {
  157. data.ResponDept = data.ResponDept === 1 ? '是' : '否';
  158. } else {
  159. data.ResponDept = '保密';
  160. }
  161. $("#visit_isquality").text(data.ResponDept); //是否过质保
  162. data.AuditUserNameRel = data.AuditUserNameRel === "" ? '——' : data.AuditUserNameRel;
  163. $("#visit_responseUser").text(data.AuditUserNameRel); //接收人
  164. }
  165. $("#visit_code").text(data.CreateUserNameRel); //创建人
  166. $("#visit_detail").html(decodeURIComponent(data.Detail)); //反馈内容
  167. $("#visit_clcontent").html(decodeURIComponent(data.clcontent)); //处理内容
  168. if(data.IsEffective === 0) {
  169. $('.visit_notes').hide();
  170. } else {
  171. $('.visit_notes').show();
  172. $("#visit_note").text(data.Province); //无效原因
  173. }
  174. }
  175. }
  176. });
  177. }
  178. //格式化 工单状态
  179. function formatterState(val) {
  180. var stateStr = '-';
  181. var stateClass = '';
  182. switch(val) { //工单状态0待指派,1待处理,2已处理
  183. case 0:
  184. stateStr = '待指派';
  185. stateClass = 'audit_wait';
  186. break;
  187. case 1:
  188. stateStr = '待处理';
  189. stateClass = 'audit_revoke';
  190. break;
  191. case 2:
  192. stateStr = '已处理';
  193. stateClass = 'audit_done';
  194. break;
  195. default:
  196. break;
  197. }
  198. return '<span class="' + stateClass + '">' + stateStr + '</span>';
  199. }
  200. //格式化 工单有效性
  201. function formatterIsEffective(val) {
  202. var stateStr = '-';
  203. var stateClass = '';
  204. switch(val) { //是否有效工单项(0有效,1无效)
  205. case 0:
  206. stateStr = '有效';
  207. stateClass = 'audit_done';
  208. break;
  209. case 1:
  210. stateStr = '无效';
  211. stateClass = 'audit_revoke';
  212. break;
  213. default:
  214. break;
  215. }
  216. return '<span class="' + stateClass + '">' + stateStr + '</span>';
  217. }
  218. //获取呼叫结果
  219. function GetHJJG() {
  220. $.ajax({
  221. type: "get",
  222. url: huayi.config.callcenter_url + "Dictionary/GetDicValueListByFlag",
  223. dataType: 'json',
  224. data: {
  225. flag: 'HJJG',
  226. token: $.cookie("token")
  227. },
  228. async: true,
  229. success: function(data) {
  230. var Count = data.data;
  231. for(var i = 0; i < Count.length; i++) {
  232. var listItem = '<li>' +
  233. '<input id="listR_' + i + '" type="radio" name="check" value="' + Count[i].F_DictionaryValueId + '" />' +
  234. '<label for="listR_' + i + '">' + Count[i].F_Name + '</label>' +
  235. '</li>';
  236. $(listItem).appendTo($("#Tgetruset"));
  237. }
  238. }
  239. });
  240. }
  241. //获取试题答案
  242. function getAnswers() {
  243. //单选格式:试题Id_选项Id|总分(选项最大分数)|得分score|选项title
  244. var anArr = [];
  245. var anForm = $('#questionBody').find('.radio');
  246. if(anForm && anForm.length > 0) {
  247. anForm.each(function(i, v) {
  248. var str = '';
  249. var radioScores = []; //放每个选项分数
  250. var inputType = $(v).find('input.quesitems').attr('type');
  251. if(inputType == 'radio') { //单选
  252. var radioName = $(v).find('input.quesitems').attr('name');
  253. var radioQid = radioName && radioName.split('_')[1]; //试题Id
  254. var radioVal = $(v).find('input[name=' + radioName + ']:checked').val(); //选项Id
  255. var radioTxt = $(v).find('input[name=' + radioName + ']:checked').siblings('span').text();
  256. var radioScore = (radioTxt && radioTxt.split(' (')[1]).substring(0, (radioTxt && radioTxt.split(' (')[1]).length - 2); //选项score
  257. var radioTitle = radioTxt && radioTxt.split(' (')[0]; //选项title
  258. var radioSpans = $(v).find('input[name=' + radioName + ']').siblings('span');
  259. radioSpans.each(function(j, n) {
  260. var radTxt = $(n).text();
  261. var radScorce = (radTxt && radTxt.split(' (')[1]).substring(0, (radTxt && radTxt.split(' (')[1]).length - 2); //选项score
  262. radioScores.push(radScorce);
  263. });
  264. var radioMaxScore = Math.max.apply(null, radioScores);
  265. if(radioQid && radioVal && radioMaxScore && radioScore && radioTitle) {
  266. str = radioQid + '_' + radioVal + '|' + radioMaxScore + '|' + radioScore + '|' + radioTitle;
  267. anArr.push(str);
  268. }
  269. }
  270. });
  271. }
  272. return anArr;
  273. }