assess_ranking.js 36 KB

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