assess_ranking.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. var isshownumber = false;
  2. $(function() {
  3. $('[data-toggle="tooltip"]').tooltip();
  4. var url = "/statistics/employee/order/data?data=chek_count_show"
  5. post_common_service(url, "", function(data) {
  6. isshownumber = false;
  7. if (typeof(data) == "undefined" || data == "") {
  8. $("#show_check_text").html("隐藏");
  9. $("#show_check").prop("checked", false)
  10. } else {
  11. if (data == "true") {
  12. isshownumber = true;
  13. $("#show_check_text").html("显示");
  14. $("#show_check").prop("checked", true)
  15. } else {
  16. $("#show_check_text").html("隐藏");
  17. $("#show_check").prop("checked", false)
  18. }
  19. }
  20. if (hasRole(ROLE_JICHA_ADMIN) || hasRole(ROLE_ADMIN)) {
  21. $("#show_check_div").removeClass("hidden");
  22. }
  23. },
  24. function(error) {
  25. });
  26. setVisit();
  27. var road_manager;
  28. if (roleContains("STATION")) {
  29. road_manager = getCurrentUser().road_manager_id;
  30. }
  31. if (roleContains("ROAD_MANAGER")) {
  32. road_manager = getCurrentUser().organid;
  33. }
  34. setRoadManagerSelect("#center-manager", road_manager, true);
  35. if (road_manager) {
  36. var dept;
  37. if (roleContains("STATION")) {
  38. dept = getCurrentUser().organid;
  39. }
  40. var feeList = cache_road_manager_fee_list_map.get(road_manager);
  41. // $("#fsList").html(obj);
  42. setRoadManagerValue(feeList, "#fsList", dept, true);
  43. // $("#fsList").val(dept);
  44. // 初始化查询
  45. initQueryEmp(road_manager, dept);
  46. } else {
  47. // 初始化查询
  48. initQueryEmp(null, null);
  49. }
  50. // 道管中心选择变化
  51. $("#center-manager").change(function() {
  52. $("#fsList").empty();
  53. if (GV(this) != '') {
  54. getFsStationList(GV(this), function(options) {
  55. $("#fsList").append(options);
  56. var dept;
  57. if (roleContains("STATION")) {
  58. dept = getCurrentUser().organid;
  59. }
  60. $("#fsList").val(dept);
  61. });
  62. }
  63. })
  64. // end
  65. })
  66. function show_check_fun() {
  67. var isshow = $("#show_check").prop("checked");
  68. if (isshow) {
  69. $("#show_check_text").html("显示");
  70. } else {
  71. $("#show_check_text").html("隐藏");
  72. }
  73. var url = "/statistics/employee/order/data?data=chek_count_show$" + isshow
  74. post_common_service(url, "", function(data) {
  75. }, function(error) {});
  76. }
  77. function queryEmpClick() {
  78. //每次点击前清空表格数据
  79. $(".table-tbody").empty('');
  80. var start_date = $("#start-time").val();
  81. var end_date = $("#end-time").val();
  82. var start_score = $("#start-score").val();
  83. var end_score = $("#end-score").val();
  84. var start_num = $("#start-num").val() != '' ? $("#start-num").val() : 0;
  85. var end_num = $("#end-num").val() != '' ? $("#end-num").val() : 100;
  86. var flag = param_method(start_score, end_score);
  87. if (flag == false) {
  88. return;
  89. }
  90. if (start_date == '' || end_date == '') {
  91. tip("请选择起止日期");
  92. return;
  93. } else {
  94. start_date += " 23:00:00";
  95. end_date += " 23:00:00";
  96. }
  97. var startStr = start_date.replace(/-/g, '/');
  98. var endStr = end_date.replace(/-/g, '/');
  99. var start = new Date(startStr);
  100. //开始日期取前一天的23:00
  101. start.setDate(start.getDate() - 1);
  102. start_date = start.Format("yyyy-MM-dd HH:mm:ss");
  103. var end = new Date(endStr);
  104. if (start > end) {
  105. tip("开始时间不能比结束时间大");
  106. return;
  107. }
  108. var param = {
  109. "parent_dept_id": GV("#center-manager"),
  110. "dept_id": GV("#fsList"),
  111. "start_date": start_date,
  112. "end_date": end_date,
  113. }
  114. var url = "statistics/employee/order";
  115. getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num)
  116. }
  117. function initQueryEmp(parent_dept_id, dept_id) {
  118. //默认初始化前一周查所有
  119. var endD = new Date();
  120. var startD = new Date();
  121. // var startD = new Date(now.getTime() - 7 * 24 * 3600 * 1000);
  122. var start_time = startD.getFullYear() + "-" + (startD.getMonth() > 10 ? startD.getMonth() : "0" + startD.getMonth()) + "-26";
  123. var end_time = endD.getFullYear() + "-" + (endD.getMonth() + 1 > 10 ? endD.getMonth() + 1 : "0" + (endD.getMonth() + 1)) + "-25";
  124. var start_score = $("#start-score").val();
  125. var end_score = $("#end-score").val();
  126. var start_num = $("#start-num").val() != '' ? $("#start-num").val() : 0;
  127. var end_num = $("#end-num").val() != '' ? $("#end-num").val() : 100;
  128. setJobSelect("#jobSelect");
  129. //默认初始化时间页面回显
  130. $("#start-time").val(start_time);
  131. $("#end-time").val(end_time);
  132. var start_date = start_time + " 23:00:00";
  133. var end_date = end_time + " 23:00:00";
  134. var start = moment(start_date).subtract(1, "day");
  135. //开始日期取前一天的23:00
  136. start_date = start.toDate().Format("yyyy-MM-dd HH:mm:ss");
  137. var param = {
  138. "parent_dept_id": parent_dept_id,
  139. "dept_id": dept_id,
  140. "start_date": start_date,
  141. "end_date": end_date,
  142. }
  143. var url = "statistics/employee/order";
  144. getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num);
  145. }
  146. /**
  147. * click
  148. * @param {*} url
  149. * @param {*} param
  150. */
  151. function getEmployeeInfosClick(url, param, start_score, end_score, start_num, end_num) {
  152. post_common_service(url, param, function(data) {
  153. console.log(data)
  154. var strTbody = '';
  155. var count = 0;
  156. var start_date_time = moment(param.end_date + "Z");
  157. var now_date_time = moment();
  158. var current_start_date = null;
  159. if (now_date_time.date() >= 26) {
  160. current_start_date = moment(now_date_time.format("YYYY-MM") + "-25 23:00:00Z").subtract(1, "month");
  161. } else {
  162. current_start_date = moment(now_date_time.format("YYYY-MM") + "-25 23:00:00Z").subtract(2, "month");
  163. }
  164. if (start_date_time.valueOf() <= current_start_date.valueOf()) {
  165. isshownumber = true;
  166. }
  167. for (var i = 0; i < data.length; i++) {
  168. var score = 1000 - filterByZeroHandle(data[i].check_score_avg, '0');
  169. var check_number = filter(data[i].checked_num, '0');
  170. var flag = judgeParamFilter(data, i, score, start_score, end_score, check_number, start_num, end_num)
  171. if (flag) {
  172. html = "";
  173. if (hasRole(ROLE_JICHA_ADMIN) || hasRole(ROLE_ADMIN) || hasRole(ROLE_ROAD_MANAGER)) {
  174. isshownumber = true;
  175. if (hasRole(ROLE_JICHA_ADMIN)) {
  176. html += "<button id=\"user_" + data[i].user.id + "\" onClick='addTask(" + data[i].user.id + ",\"" + data[i].user.truename + "\",\"" + data[i].user.fee_station_name + "\",\"" + data[i].checked_num + "\",\"" + param.start_date + "\",\"" + param.end_date + "\")' class=\"btn\" style='margin-left: 10px;padding: 0px;border: 0;background: none;' type=\"button\"><i class=\"icon icon-plus-sign\"></i></button>"
  177. }
  178. }
  179. strTbody += "<tr><td width='4%;'>" + (count + 1) + "</td><td width='6%;'>" + data[i].user.fee_station_name + "</td>" +
  180. "<td width='6%;'>" + data[i].user.truename + "</td><td width='6%;'>" + data[i].user.position_name + "</td>" +
  181. "<td width='7%;'>" + data[i].user.workno + "</td><td width='4%;'>" + filter(data[i].company_ranking, '/') + "</td>" +
  182. "<td width='4%;'>" + filter(data[i].center_ranking, '/') + "</td><td width='4%;'>" + filter(data[i].fee_station_ranking, '/') +
  183. "</td><td width='4%;'>" + getItemScore(data[i], '环境') + "</td>" +
  184. "<td width='4%;'>" + getItemScore(data[i], '仪容仪表') + "</td><td width='4%;'>" + getItemScore(data[i], '表情') + "</td>" +
  185. "<td width='4%;'>" + getItemScore(data[i], '动作') + "</td><td width='4%;'>" + getItemScore(data[i], '文明用语') + "</td>" +
  186. "<td width='4%;'>" + getItemScore(data[i], '工作纪律') + "</td><td width='4%'>" + getItemScore(data[i], '便民服务') + "</td><td width='4%;'>" +
  187. getItemScore(data[i], '安全管理') + "</td><td width='4%;'>" + data[i].check_all_score + "</td>" +
  188. "<td width='6%;'>" + (isshownumber ? (filter(data[i].checked_num, '0') + (data[i].checked_num < 6 ? html : "")) : "-") + "</td><td width='4%;'>" + filterSlash(filterByZeroHandle(data[i].check_score_avg, '0'), filter(data[i].checked_num + data[i].checked_m_num, '0')) + "</td>" +
  189. "<td width='4%;'>" + filterSlash(score, filter(data[i].checked_num + data[i].checked_m_num, '0')) + "</td><td width='4%;'>" + "</td><td width='4%;'>" + "</td></tr>";
  190. count++;
  191. }
  192. }
  193. $(".table-tbody").append(strTbody);
  194. $("tr:gt(1):odd").css("background", "#EFEFEF");
  195. }, function(error) {
  196. return "";
  197. });
  198. }
  199. function showAddTaskListView(data, widthtemp, heighttemp, start_date, end_date) {
  200. var tasklist = data.teamClasseList;
  201. var userclasslist = data.userClassCountList;
  202. var allheight = heighttemp;
  203. var height = allheight - 150 - 45;
  204. var allwidth = widthtemp;
  205. //计算日期
  206. var satrtday = moment(start_date).toDate();
  207. var endday = moment(end_date).toDate();
  208. var taskmap = new Map();
  209. var userClassmap = new Map();
  210. for (var i = 0; i < tasklist.length; i++) {
  211. var task = tasklist[i];
  212. if (!taskmap.get(task.work_date)) {
  213. taskmap.put(task.work_date, []);
  214. }
  215. var arr = taskmap.get(task.work_date);
  216. arr.push(task);
  217. taskmap.put(task.work_date, arr);
  218. }
  219. for (var i = 0; i < userclasslist.length; i++) {
  220. var usercount = userclasslist[i];
  221. var daytime = moment(usercount.start_time).toDate()
  222. if (daytime.getHours() >= 23) {
  223. daytime = new Date(daytime.valueOf() + (1000 * 60 * 60 * 24))
  224. }
  225. var work_date = daytime.Format("yyyy-MM-dd") + " 00:00";
  226. if (!userClassmap.get(work_date)) {
  227. userClassmap.put(work_date, []);
  228. }
  229. var arr = userClassmap.get(work_date);
  230. arr.push(usercount);
  231. userClassmap.put(work_date, arr);
  232. }
  233. var days = (endday.valueOf() - satrtday.valueOf()) / (1000 * 60 * 60 * 24);
  234. var header = "<td></td>"
  235. var nighttd = "<td>夜班</td>"
  236. var middletd = "<td>中班</td>"
  237. var morningtd = "<td>早班</td>"
  238. for (var i = 1; i <= days; i++) {
  239. var daytime = new Date(satrtday.valueOf() + i * 1000 * 60 * 60 * 24 - 1000 * 60 * 60 * 23);
  240. var workday = daytime.Format("yyyy-MM-dd HH:mm");
  241. var html1 = ""
  242. var html2 = ""
  243. var html3 = ""
  244. if (taskmap.get(workday)) {
  245. var userclassarry = null;
  246. if (userClassmap.get(workday)) {
  247. userclassarry = userClassmap.get(workday);
  248. }
  249. var arry = taskmap.get(workday);
  250. for (var j = 0; j < arry.length; j++) {
  251. var hasin = false;
  252. var tasktemp = arry[j];
  253. var hasmin = false;
  254. var taskfail = false;
  255. if (userclassarry != null) {
  256. var d = hasinList(tasktemp, userclassarry)
  257. hasin = d != null
  258. if (hasin) {
  259. if (d.check_status == 22) {
  260. taskfail = true;
  261. }
  262. }
  263. }
  264. if ((moment(tasktemp.end_time).toDate()).valueOf() - (moment(tasktemp.start_time).toDate()).valueOf() < 1000 * 60 * 15) {
  265. hasmin = true;
  266. }
  267. var name = (moment(tasktemp.start_time).toDate()).Format("HH:mm") + "--" + (moment(tasktemp.end_time).toDate()).Format("HH:mm")
  268. var classname = "btn-success";
  269. if (hasmin) {
  270. //放开15分钟限制
  271. classname = "btn-success";
  272. // classname = "btn-success disabled";
  273. name += "<span class=\"label label-badge\">未</span>";
  274. }
  275. if (hasin) {
  276. classname = "btn-danger disabled";
  277. }
  278. if (taskfail) {
  279. classname = "btn-info disabled";
  280. }
  281. var teamid = tasktemp.class_id + "_" + (typeof(tasktemp.unregular_id) == "undefined" ? "" : tasktemp.unregular_id)
  282. if (tasktemp.class_type == 1) {
  283. html2 += "<div class='row'><button class=\"btn " + classname + " classbtn\" id=" + teamid + " data=" + workday + " onclick='selectTeamClass(this)' type=\"button\">" + name + "</button></div>"
  284. // html1 +='<div class="row"><label class="btn '+classname+'"><input type="radio" name="options" id="option2">'+name+'</label></div>'
  285. continue;
  286. }
  287. if (tasktemp.class_type == 2) {
  288. html1 += "<div class='row'><button class=\"btn " + classname + " classbtn\" id=" + teamid + " data=" + workday + " onclick='selectTeamClass(this)' type=\"button\">" + name + "</button></div>"
  289. continue;
  290. }
  291. if (tasktemp.class_type == 3) {
  292. html3 += "<div class='row'><button class=\"btn " + classname + " classbtn\" id=" + teamid + " data=" + workday + " onclick='selectTeamClass(this)' type=\"button\">" + name + "</button></div>"
  293. continue;
  294. }
  295. }
  296. }
  297. if (userClassmap.get(workday)) {
  298. var teamclassarry = null;
  299. if (taskmap.get(workday)) {
  300. teamclassarry = taskmap.get(workday);
  301. }
  302. var arry = userClassmap.get(workday);
  303. for (var j = 0; j < arry.length; j++) {
  304. var hasin = false;
  305. var usercounttemp = arry[j];
  306. var taskfail = false;
  307. if (teamclassarry != null) {
  308. var d = hasinList(usercounttemp, teamclassarry)
  309. hasin = d != null
  310. if (usercounttemp.check_status == 22) {
  311. taskfail = true;
  312. }
  313. }
  314. if (usercounttemp.check_status == 22) {
  315. taskfail = true;
  316. }
  317. var classname = "btn-danger disabled";
  318. var name = (moment(usercounttemp.start_time).toDate()).Format("HH:mm") + "--" + (moment(usercounttemp.end_time).toDate()).Format("HH:mm") + "<span class=\"label label-badge\">删</span>";
  319. if (hasin) {
  320. continue;
  321. }
  322. if (taskfail) {
  323. classname = "btn-info disabled";
  324. // name+="<span class=\"label label-badge\">无效</span>";
  325. }
  326. if (usercounttemp.class_type == 1) {
  327. html2 += "<div class='row'><button class=\"btn " + classname + " classbtn\" type=\"button\">" + name + "</button></div>"
  328. continue;
  329. }
  330. if (usercounttemp.class_type == 2) {
  331. html1 += "<div class='row'><button class=\"btn " + classname + " classbtn\" type=\"button\">" + name + "</button></div>"
  332. continue;
  333. }
  334. if (usercounttemp.class_type == 3) {
  335. html3 += "<div class='row'><button class=\"btn " + classname + " classbtn\" type=\"button\">" + name + "</button></div>"
  336. continue;
  337. }
  338. }
  339. }
  340. nighttd += "<td>" + (html3 == "" ? "无" : html3) + "</td>"
  341. middletd += "<td>" + (html1 == "" ? "无" : html1) + "</td>"
  342. morningtd += "<td>" + (html2 == "" ? "无" : html2) + "</td>"
  343. header += "<td>" + daytime.Format("dd") + "</td>"
  344. }
  345. var css = '<style lang="css">' +
  346. '.row{' +
  347. ' margin-right: 0px; ' +
  348. ' margin-left: 0px;' +
  349. '}' +
  350. '.selecttag{' +
  351. ' line-height:32px' +
  352. '}' +
  353. '.table td {' +
  354. ' vertical-align: middle;' +
  355. ' text-align: center;' +
  356. ' border-left: 1px solid #ddd;' +
  357. ' border-right: 1px solid #ddd;' +
  358. ' border-top: 1px solid #ddd;' +
  359. '}' +
  360. '.classbtn{' +
  361. ' font-size:10px;' +
  362. ' text-align: center;' +
  363. ' padding: 0;' +
  364. '}' +
  365. '.spanclass{' +
  366. ' width:10px;' +
  367. ' height: 10px;' +
  368. '}' +
  369. '.gimportant{' +
  370. ' background:#BD7B46 !important;' +
  371. ' color:#ffffff !important' +
  372. '}' +
  373. '</style>';
  374. var table1 = '<div class="row scrollbar" style="height:' + height + 'px;width:' + (allwidth - 21) + 'px;overflow:scroll;padding-top:10px;padding-bottom:10px"><table class="table" style="height:' + height + 'px;margin:0px">' +
  375. ' <tbody>' +
  376. ' <tr style="height:10px" >' +
  377. header +
  378. ' </tr>' +
  379. ' <tr class="danger">' +
  380. nighttd +
  381. ' </tr>' +
  382. ' <tr class="warning">' +
  383. morningtd +
  384. ' </tr>' +
  385. ' <tr class="active">' +
  386. middletd +
  387. ' </tr>' +
  388. ' </tbody>' +
  389. '</table></div>';
  390. var tips = '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#ea644a"/><div class="col-xs-10">排班已被稽查</div></div>' +
  391. // '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#F1A325"/><div class="col-xs-10">已稽查但排班被删除</div></div>'+
  392. '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#03B8CF"/><div class="col-xs-10">排班已稽查但任务无效</div></div>' +
  393. // '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#BD7B46"/><div class="col-xs-10">已稽查但任务无效且排班已删除</div></div>'+
  394. '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#38B03F"/><div class="col-xs-10">排班可被稽查</div></div>' +
  395. // '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#7EC377"/><div class="col-xs-10">排班未满15分钟</div></div>'+
  396. '<div class="row" style="text-align: left;"><span class=\"label label-badge\">删</span> 排班已删除</div>' +
  397. '<div class="row" style="text-align: left;"><span class=\"label label-badge\">未</span> 排班未满15分钟</div>';
  398. var selectdiv = '<div class="row" style="text-align: left;"><div class="col-xs-10">已选择的排班:</div></div>' +
  399. '<div class="row" style="text-align: left;"><div class="col-xs-2"/><div class="col-xs-10"><span id="selectedclass" style="font-size:10px"></span></div></div>';
  400. var optlist = "";
  401. var userlist = data.userList;
  402. for (var q = 0; q < userlist.length; q++) {
  403. var user = userlist[q];
  404. optlist += ' <option value="' + user.id + '">' + user.truename + '</option>'
  405. }
  406. var html = css + '<div class="row row_alert" style="padding-left:10px;padding-right:10px;">' + table1 + '</div><div class="row row_alert" style="bottom: 0;position: absolute;width: 100%;text-align: right;}">' +
  407. '<div class="col-xs-4">' + tips + '</div><div class="col-xs-3">' + selectdiv + '</div><div class="col-xs-3"><span class="selecttag" style="text-align: right;">请分配对应的稽查人员:</span></div><div class="col-xs-2 class="selecttag""><select data-placeholder="选择稽查员" id="selectusers" class="chosen-select form-control" >' +
  408. optlist +
  409. '</select></div><div class="row row_alert"><button class="btn btn-primary" style="margin:20px;margin-right:10px" onclick="creatTask()" type="button">生成任务</button></div></div>';
  410. return html;
  411. }
  412. var data_p = null;
  413. var layerindex = null;
  414. function addTask(userid, username, stationname, checknum, start_date, end_date) {
  415. data_p = {
  416. "userid": userid,
  417. "username": username,
  418. "stationname": stationname,
  419. "checknum": checknum,
  420. "start_date": start_date,
  421. "end_date": end_date
  422. }
  423. //获取该人员排班
  424. var url = "teamClass/getUserClasss"
  425. var param = {
  426. "user_id": userid,
  427. "start_time": start_date,
  428. "end_time": end_date
  429. }
  430. post_common_service(url, param, function(data) {
  431. var allheight = 600;
  432. var height = allheight - 150 - 45;
  433. var allwidth = 1100;
  434. var html = showAddTaskListView(data, allwidth, allheight, start_date, end_date);
  435. layerindex = layer.open({
  436. type: 1,
  437. title: "生成稽查任务:" + stationname + "--" + username + " 已稽查:" + checknum + "次",
  438. skin: 'layui-layer-rim', //加上边框
  439. area: [allwidth + 'px', allheight + 'px'], //宽高
  440. scrollbar: false,
  441. content: "<div id ='layerhtml'>" + html + "</div>",
  442. cancel: function(index, layero) {
  443. layer.close(index);
  444. // queryEmpClick();
  445. return false;
  446. }
  447. });
  448. });
  449. }
  450. function selectTeamClass(obj) {
  451. $("#selectedclass").html($(obj).attr('data') + " " + $(obj).html() + "的排班");
  452. $("#selectedclass").attr('data', obj.id);
  453. }
  454. function creatTask() {
  455. if (parseInt(data_p.checknum) >= 6) {
  456. tip("已经生成了6次");
  457. return;
  458. }
  459. //获取classid
  460. var id = $("#selectedclass").attr('data');
  461. //获取userid
  462. var userid = $("#selectusers").val();
  463. if (id != null && typeof(id) != "undefined") {
  464. var ids = id.split("_");
  465. var classid = ids[0];
  466. var unregular_id = ids[1];
  467. var url = task_server_url + "/task/add"
  468. if (unregular_id == null || unregular_id == "") {
  469. url += '?classid=' + classid + '&userid=' + userid;
  470. } else {
  471. url += '?classid=' + classid + '&unregularid=' + unregular_id + '&userid=' + userid;
  472. }
  473. $.ajax({
  474. type: 'GET',
  475. url: url,
  476. contentType: "application/json",
  477. dataType: "json",
  478. async: true,
  479. success: function(response) {
  480. var data = response;
  481. if (data.result_code == 0) {
  482. tip("生成成功", null)
  483. if ($("#layerhtml").length > 0 && data_p != null) {
  484. //获取该人员排班
  485. var url = "teamClass/getUserClasss"
  486. var param = {
  487. "user_id": data_p.userid,
  488. "start_time": data_p.start_date,
  489. "end_time": data_p.end_date
  490. }
  491. post_common_service(url, param, function(data) {
  492. var allheight = 600;
  493. var height = allheight - 150 - 45;
  494. var allwidth = 1100;
  495. var html = showAddTaskListView(data, allwidth, allheight, data_p.start_date, data_p.end_date);
  496. $("#layerhtml").html(html);
  497. data_p.checknum = parseInt(data_p.checknum) + 1;
  498. var nanme = "生成稽查任务:" + data_p.stationname + "--" + data_p.username + " 已稽查:" + (data_p.checknum) + "次";
  499. layer.title(nanme, layerindex)
  500. });
  501. }
  502. } else {
  503. tip(data.result_desc, null)
  504. }
  505. },
  506. error: function(error) {
  507. tip("网络错误", null)
  508. }
  509. })
  510. } else {
  511. tip("未选择任务", null)
  512. }
  513. }
  514. function hasinList(task, list) {
  515. var hasin = false;
  516. for (var p = 0; p < list.length; p++) {
  517. var userclasscount = list[p];
  518. if (typeof(task.unregular_id) == "undefined") {
  519. if (typeof(userclasscount.unregular_id) == "undefined") {
  520. if (task.class_id == userclasscount.class_id) {
  521. return userclasscount;
  522. } else {
  523. continue;
  524. }
  525. } else {
  526. continue;
  527. }
  528. } else {
  529. if (typeof(userclasscount.unregular_id) == "undefined") {
  530. continue;
  531. } else {
  532. if (task.class_id == userclasscount.class_id && userclasscount.unregular_id == task.unregular_id) {
  533. return userclasscount;
  534. }
  535. }
  536. }
  537. }
  538. return null;
  539. }
  540. /**
  541. * 对于受检次数为0,扣分和得分都为 /
  542. * @param {*} value , check_num 受此次数
  543. * @return value or /
  544. */
  545. function filterSlash(value, check_num) {
  546. if (check_num == 0) {
  547. return '/';
  548. } else {
  549. return value;
  550. }
  551. }
  552. function judgeParamFilter(data, i, score, start_score, end_score, check_number, start_num, end_num) {
  553. var flag1 = false;
  554. if (score >= parseFloat(start_score) && score <= parseFloat(end_score)) {
  555. flag1 = true;
  556. } else {
  557. flag1 = false;
  558. }
  559. var flag2 = false;
  560. if (check_number >= parseFloat(start_num) && check_number <= parseFloat(end_num)) {
  561. flag2 = true;
  562. } else {
  563. flag2 = false;
  564. }
  565. var jobSelect = $("#jobSelect").val();
  566. if (jobSelect) {
  567. if (data[i].user.positionid == jobSelect) {
  568. flag3 = true;
  569. } else {
  570. flag3 = false;
  571. }
  572. } else {
  573. flag3 = true;
  574. }
  575. return flag1 & flag2 & flag3;
  576. }
  577. function average(obj) {
  578. if (filter(obj.checked_num + obj.checked_m_num, '0') == 0) {
  579. return 0;
  580. } else {
  581. return (obj.check_all_score + obj.check_all_m_score) / filter(obj.checked_num + obj.checked_m_num, '1')
  582. }
  583. }
  584. /**
  585. * 过滤undefined
  586. * @param {*} value
  587. * @param {*} default_display_value
  588. */
  589. function filter(value, default_display_value) {
  590. if (value != '' && value != undefined) {
  591. return value;
  592. } else if (default_display_value != undefined) {
  593. return default_display_value;
  594. } else {
  595. return "";
  596. }
  597. }
  598. /**
  599. * 获取扣分详情
  600. * @param {*} obj
  601. * @param {*} check_item_name
  602. */
  603. function getItemScore(obj, check_item_name) {
  604. var names = obj.checked_socre_name;
  605. var scores = obj.checked_score;
  606. for (var i = 0; i < names.length; i++) {
  607. if (names[i].indexOf(check_item_name) > -1) {
  608. return scores[i];
  609. }
  610. }
  611. return 0;
  612. }
  613. /**
  614. * 过滤除数为0和保留二位小数时出现的0.00
  615. * @param {*} value
  616. * @param {*} default_display_value
  617. */
  618. function filterByZeroHandle(value, default_display_value) {
  619. if (isNaN(value)) {
  620. return default_display_value;
  621. } else {
  622. if ((value + '').endsWith('.00')) {
  623. return value.substring(0, value.length - 3);
  624. }
  625. return value;
  626. }
  627. }
  628. function exportExcel() {
  629. var dept_id = $("#fsList").val();
  630. var start_date = $("#start-time").val();
  631. var end_date = $("#end-time").val();
  632. var start_score = $("#start-score").val();
  633. var end_score = $("#end-score").val();
  634. var parent_dept_id = $("#center-manager").val();
  635. var max_score = $("#end-score").val();
  636. var min_score = $("#start-score").val();
  637. var min_check_num = $("#start-num").val();
  638. var max_check_num = $("#end-num").val();
  639. var position_id = $("#jobSelect").val();
  640. var flag = param_method(start_score, end_score);
  641. if (flag == false) {
  642. return;
  643. }
  644. if (start_date == '' || end_date == '') {
  645. tip("请选择起止日期");
  646. return;
  647. } else {
  648. start_date += " 23:00:00";
  649. end_date += " 23:00:00";
  650. var start = new Date(start_date);
  651. //开始日期取前一天的23:00
  652. start.setDate(start.getDate() - 1);
  653. start_date = start.Format("yyyy-MM-dd HH:mm:ss");
  654. }
  655. if (!dept_id) dept_id = "";
  656. window.open(getserveraddr() + "/file/employee/order?dept_id=" + dept_id +
  657. "&start_date=" + start_date + "&end_date=" + end_date + "&start_score=" + start_score + "&end_score=" + end_score + "&parent_dept_id=" + parent_dept_id +
  658. "&max_score=" + max_score + "&min_score=" + min_score + "&min_check_num=" + min_check_num + "&max_check_num=" + max_check_num + "&position_id=" + position_id);
  659. }
  660. function param_method(start_score, end_score) {
  661. if (start_score == '' || end_score == '') {
  662. tip("请输入得分区间");
  663. return false;
  664. } else if (!(/^[0-9]*$/).test(start_score) || !(/^[0-9]*$/).test(end_score)) {
  665. tip("数字不合法!");
  666. return false;
  667. } else if (parseInt(start_score) > parseInt(end_score)) {
  668. tip("开始得分不能比结束得分大");
  669. return false;
  670. } else if (start_score < 0 || start_score > 1000 || end_score < 0 || end_score > 1000) {
  671. tip("得分只能在0-1000之间");
  672. return false;
  673. } else {
  674. return true;
  675. }
  676. }
  677. function setVisit() {
  678. // if (roleContains("STATION")) {
  679. // $("#center-manager").attr("disabled", "disabled");
  680. // $("#fsList").attr("disabled", "disabled");
  681. // }
  682. // if(roleContains("ROAD_MANAGER")){
  683. // $("#center-manager").attr("disabled","disabled");
  684. // }
  685. }