assess_ranking.js 32 KB

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