charge_team_schedule.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. // $(document).ready(function() {
  2. // initChargeTeamSchedule()
  3. // })
  4. function initChargeTeamSchedule(){
  5. $("#main_content_title").html("收费人员排班")
  6. var user = $.zui.store.get("user") ; // 缓存用户信息,取出dept_id
  7. // 用户的dept_id
  8. var user_dept_id = user.organid ;
  9. // 收费小组type
  10. var team_type = 1 ;
  11. // 日期游标
  12. var date_cursor = 0 ;
  13. $('#calendar').calendar();
  14. var calendar = $('#calendar').data('zui.calendar');
  15. calendarInit();
  16. // 请求收费人员排班数据
  17. function calendarInit(data_param){
  18. var datap = {
  19. "dept_id": user_dept_id ,
  20. "start_time":getMonthByCondition(date_cursor,'first').Format("yyyy-MM-dd HH:mm:ss"),//getCurrentMonthFirst(),
  21. "end_time":getMonthByCondition(date_cursor,'last').Format("yyyy-MM-dd HH:mm:ss"),//getCurrentMonthLast(),
  22. 'type':team_type
  23. }
  24. if(data_param != undefined){
  25. datap = data_param ;
  26. }
  27. getTeamClass(datap,function(data){
  28. var newEvents = [];
  29. // console.log(data);
  30. for(var i=0;i<data.length;i++){
  31. var obj = {id:data[i].id ,desc:data[i].team_name ,title: data[i].team_name+"-"+getTeamName(data[i].class_type), start: data[i].start_time, end: data[i].start_time};//都以开始时间的日期为准
  32. newEvents.push(obj);
  33. }
  34. // 这里轮训给每天都增加一个事件
  35. var date = getMonthByCondition(date_cursor,'first');//new Date();
  36. var end_date = getMonthByCondition(date_cursor,'last');//new Date(getCurrentMonthLast2()) ;
  37. if(data_param != undefined){
  38. date = new Date(data_param.start_time);
  39. end_date = new Date(data_param.end_time) ;
  40. }
  41. for(var i =0;i<31;i++){
  42. if( date.setDate(i+1) < end_date ){
  43. var obj = {id:-1 ,desc:'详细排班' ,title: '+详细排班', start:date.Format('yyyy-MM-dd'), end: date.Format('yyyy-MM-dd'),color:'#bd7b46'};
  44. newEvents.push(obj);
  45. }
  46. }
  47. calendar.addEvents(newEvents);
  48. })
  49. }
  50. // 获取排班信息
  51. function getTeamClass(data,_function){
  52. post_common_service( "teamClass/getClassList",data,function(data){
  53. _function(data);
  54. },function(error){
  55. return "" ;
  56. })
  57. }
  58. getStation();
  59. var lans = 0;
  60. var entrance_number = 0;
  61. var exit_number = 0;
  62. // 获取收费站信息
  63. function getStation(){
  64. get_common_service( "dept/getFsByDept","",function(data){
  65. if(data != null){
  66. $(".thread_charge").append("<th>"+data.name+"</th>");
  67. $(".thread_charge").append("<th>值班室</th>");
  68. // console.log(data);
  69. lans = data.lanes_number;
  70. entrance_number = data.entrance_numer ;
  71. exit_number = data.exit_numer ;
  72. // for(var i=0;i<data.lanes_number;i++){
  73. // $(".thread_charge").append("<th>进口车道"+(i+1)+"</th>");
  74. // }
  75. for(var i=0;i<entrance_number;i++){
  76. $(".thread_charge").append("<th>入口"+(i+1)+"</th>");
  77. }
  78. for(var i=0;i<exit_number;i++){
  79. $(".thread_charge").append("<th>出口"+(i+1)+"</th>");
  80. }
  81. }
  82. },function(error){
  83. return "" ;
  84. })
  85. }
  86. getClassCode();
  87. var classCode = {};
  88. /**
  89. * 获取班组信息
  90. */
  91. function getClassCode(){
  92. var data = {} ;
  93. post_common_service( "teamClass/getClassCode",data,function(data){
  94. for(var i=0;i<data.length;i++){
  95. classCode[data[i].code] = data[i];
  96. }
  97. // console.log(classCode);
  98. $(".class_type_1").html(classCode[1].class_name);
  99. $(".class_type_2").html(classCode[2].class_name);
  100. $(".class_type_3").html(classCode[3].class_name);
  101. },function(error){
  102. return "" ;
  103. })
  104. }
  105. // 更新日历数据
  106. function updateCalendar(data){
  107. calendar.events = [];
  108. calendar.display();
  109. calendarInit(data);
  110. }
  111. // 当月第一天
  112. function getCurrentMonthFirst(){
  113. var date=new Date();
  114. date.setDate(1);
  115. date.setHours(0);
  116. date.setMinutes(0);
  117. date.setSeconds(0);
  118. return date.Format("yyyy-MM-dd HH:mm:ss");
  119. }
  120. // 当月最后一天
  121. function getCurrentMonthLast(){
  122. var date=new Date();
  123. var currentMonth=date.getMonth();
  124. var nextMonth=++currentMonth;
  125. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  126. var oneDay=1000*60*60*24;
  127. var date1 = new Date(nextMonthFirstDay-oneDay);
  128. date1.setHours(23);
  129. date1.setMinutes(59);
  130. date1.setSeconds(59);
  131. return date1.Format("yyyy-MM-dd HH:mm:ss");
  132. }
  133. // 当月最后一天
  134. function getCurrentMonthLast2(){
  135. var date=new Date();
  136. var currentMonth=date.getMonth();
  137. var nextMonth=++currentMonth;
  138. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  139. var oneDay=0;//1000*60*60*24;
  140. var date1 = new Date(nextMonthFirstDay-oneDay);
  141. date1.setHours(0);
  142. date1.setMinutes(0);
  143. date1.setSeconds(0);
  144. return date1.Format("yyyy-MM-dd HH:mm:ss");
  145. }
  146. // 上一个月或者下个月的第一天或者最后一天
  147. function getMonthByCondition(pre_or_after,first_or_last){
  148. if(first_or_last == 'first'){
  149. var date=new Date();
  150. date.setDate(1);
  151. date.setHours(0);
  152. date.setMinutes(0);
  153. date.setSeconds(0);
  154. date.setMonth(date.getMonth()+pre_or_after);
  155. return date;
  156. }else if(first_or_last == 'last'){
  157. var date = new Date();
  158. date.setMonth(date.getMonth()+pre_or_after);//此处月份加减,不能放到最后加减,会引起月份天数不对
  159. var currentMonth=date.getMonth();
  160. var nextMonth=++currentMonth;
  161. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  162. var date1 = nextMonthFirstDay;
  163. date1.setDate(date1.getDate()-1);
  164. date1.setHours(23);
  165. date1.setMinutes(59);
  166. date1.setSeconds(59);
  167. return date1 ;
  168. }
  169. }
  170. $("#save_user_class").click(function(){
  171. var dutyList = [];
  172. var work_date = $("#save_user_class").data("work_date")+"00:00:00";
  173. for(var j=1;j<4;j++){
  174. var cache = $(".tr-"+j).data("cache");
  175. if(cache) {
  176. for(var i=0;i<lans+1;i++){
  177. if($(".tr-"+j+" td select").eq(i).val()!='' ){
  178. var start_time = $("#save_user_class").data("work_date")+ classCode[j].start_time+":00" ;
  179. var end_time = $("#save_user_class").data("work_date")+classCode[j].end_time+":00";
  180. var obj = { "work_date":work_date,"dept_id":cache.dept_id,"user_id": $(".tr-"+j+" td select").eq(i).val() , "class_type":j,"team_id":cache.team_id,"start_time":start_time, "end_time":end_time,"lane":$(".tr-"+j+" td select").eq(i).parent().attr('tag') };
  181. dutyList.push(obj);
  182. }
  183. }
  184. }
  185. }
  186. $("#save_user_class").attr("disabled","disabled");
  187. if($("#save_user_class").data("modify_flag")){
  188. $("#save_user_class").data("modify_flag",false);
  189. post_common_service( "userClass/updateList",dutyList,function(data){
  190. tip("修改成功");
  191. $('#add_fee_station').modal('hide');
  192. $("#save_user_class").attr("disabled",false );
  193. },function(error){
  194. return "" ;
  195. })
  196. return ;
  197. }
  198. post_common_service( "userClass/addList",dutyList,function(data){
  199. tip("添加成功");
  200. $('#add_fee_station').modal('hide');
  201. $("#save_user_class").attr("disabled",false );
  202. },function(error){
  203. return "" ;
  204. })
  205. })
  206. $('#calendar').calendar().on("clickEvent.zui.calendar", function(event) {
  207. // console.log(event。event.id);
  208. if(event.event.id == -1){
  209. // 这边负责添加整个页面的数据 按车道排班
  210. $('#add_fee_station').modal();
  211. $(".modal-title").html("收费站排班表-"+event.event.start.Format("yyyy-MM-dd"));
  212. $("#save_user_class").data("work_date",event.event.start.Format("yyyy-MM-dd "));
  213. var data = {
  214. "dept_id": user_dept_id ,
  215. "start_time":event.event.start.Format("yyyy-MM-dd 00:00:00"),
  216. "end_time": event.event.start.Format("yyyy-MM-dd 00:00:00"),
  217. 'type':team_type
  218. }
  219. post_common_service( "teamClass/getClassListAndUsers",data,function(data){
  220. $("#save_user_class").html("生成今日值班");
  221. $(".tr-1,.tr-2,.tr-3").empty();
  222. for(var i=0;i<data.length;i++){
  223. if(data[i].class_type == 1){
  224. $(".tr-1").data("cache",data[i]);
  225. // $(".tr-1").append("<td>早班 6:00 - 12:00</td>");
  226. $(".tr-1").append("<td>"+ classCode["1"].class_name +" "+classCode["1"].start_time+" - "+classCode["1"].end_time +"</td>");
  227. var selectv = "<select class='form-control'>"
  228. // console.log(data[i]);
  229. selectv += ("<option value=''>请选择</option>");
  230. for(var j=0;j<data[i].users.length;j++){
  231. var obj = data[i].users[j];
  232. selectv += ("<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>");
  233. }
  234. selectv += "</select>";
  235. // for(var z=0;z<lans+1;z++){
  236. // $(".tr-1").append("<td>"+ selectv +"</td>")
  237. // }
  238. $(".tr-1").append("<td class='c-1-0' tag='0'>"+ selectv +"</td>")
  239. for(var z=0;z<entrance_number;z++){
  240. $(".tr-1").append("<td class='c-1-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv +"</td>")
  241. }
  242. for(var z=0;z<exit_number;z++){
  243. $(".tr-1").append("<td class='c-1--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv +"</td>")
  244. }
  245. }else if(data[i].class_type == 2){
  246. // $(".tr-2").append("<td>中班 12:00 - 20:00</td>");
  247. $(".tr-2").append("<td>"+ classCode[2].class_name +" "+classCode[2].start_time+" - "+classCode[2].end_time +"</td>");
  248. $(".tr-2").data("cache",data[i]);
  249. var selectv2 = "<select class='form-control'>"
  250. selectv2 += ("<option value=''>请选择</option>");
  251. for(var j=0;j<data[i].users.length;j++){
  252. if(data[i].users[j]!=null)
  253. selectv2 += ("<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>")
  254. }
  255. selectv2 += "</select>";
  256. // for(var z=0;z<lans+1;z++){
  257. // $(".tr-2").append("<td>"+ selectv2 +"</td>")
  258. // }
  259. $(".tr-2").append("<td class='c-2-0' tag='0'>"+ selectv2 +"</td>")
  260. for(var z=0;z<entrance_number;z++){
  261. $(".tr-2").append("<td class='c-2-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv2 +"</td>")
  262. }
  263. for(var z=0;z<exit_number;z++){
  264. $(".tr-2").append("<td class='c-2--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv2 +"</td>")
  265. }
  266. }else if(data[i].class_type == 3){
  267. // $(".tr-3").append("<td>晚班 20:00 - 6:00</td>");
  268. $(".tr-3").append("<td>"+ classCode[3].class_name +" "+classCode[3].start_time+" - "+classCode[3].end_time +"</td>");
  269. $(".tr-3").data("cache",data[i]);
  270. var selectv3 = "<select class='form-control'>"
  271. selectv3 += ("<option value=''>请选择</option>");
  272. for(var j=0;j<data[i].users.length;j++){
  273. if(data[i].users[j]!=null)
  274. selectv3 += "<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>"
  275. }
  276. selectv3 += "</select>";
  277. $(".tr-3").append("<td class='c-3-0' tag='0'>"+ selectv3 +"</td>")
  278. for(var z=0;z<entrance_number;z++){
  279. $(".tr-3").append("<td class='c-3-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv3 +"</td>")
  280. }
  281. for(var z=0;z<exit_number;z++){
  282. $(".tr-3").append("<td class='c-3--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv3 +"</td>")
  283. }
  284. // for(var z=0;z<lans+1;z++){
  285. // $(".tr-3").append("<td>"+ selectv3 +"</td>")
  286. // }
  287. }
  288. }
  289. if(data.length ==0){
  290. $(".tr-1").append("<td>"+ classCode["1"].class_name +" "+classCode["1"].start_time+" - "+classCode["1"].end_time +"</td>");
  291. $(".tr-2").append("<td>"+ classCode[2].class_name +" "+classCode[2].start_time+" - "+classCode[2].end_time +"</td>");
  292. $(".tr-3").append("<td>"+ classCode[3].class_name +" "+classCode[3].start_time+" - "+classCode[3].end_time +"</td>");
  293. for(var i=0;i<lans+1;i++){
  294. $(".tr-1,.tr-2,.tr-3").append("<td></td>");
  295. }
  296. }else{
  297. var cache = $(".tr-1").data("cache");
  298. var work_date = $("#save_user_class").data("work_date")+"00:00:00";
  299. var param = {
  300. 'dept_id':user_dept_id,
  301. 'work_date':work_date
  302. }
  303. post_common_service( "userClass/getList",param,function(data){
  304. // 这边将值班数据检索出来,初始化收费站车道排班中
  305. // console.log(data);
  306. if(data.length > 0){
  307. $("#save_user_class").data("modify_flag",true);
  308. $("#save_user_class").html("修改今日值班");
  309. }else{
  310. $("#save_user_class").html("生成今日值班");
  311. $("#save_user_class").data("modify_flag",false);
  312. }
  313. // console.log(data);
  314. for(var i=0;i<data.length;i++){
  315. $(".c-"+data[i].class_type+"-"+data[i].lane+" select").val(data[i].user_id);
  316. // $(".table .tr-"+data[i].class_type+" select").eq(i%(lans+1)).val(data[i].user_id);
  317. }
  318. },function(error){
  319. return "" ;
  320. })
  321. }
  322. },function(error){
  323. return "" ;
  324. })
  325. }else{
  326. click_function(event.event.start);
  327. }
  328. });
  329. /**
  330. * 点击日历触发函数
  331. */
  332. function click_function(date){
  333. setAddTermTitle(date.Format("yyyy-MM-dd"));
  334. // 保存当前日期
  335. $("#save_term_class").data("date",date.Format("yyyy-MM-dd"));
  336. var data = {
  337. "dept_id": user_dept_id ,
  338. "start_time":date.Format("yyyy-MM-dd 00:00:00"),
  339. "end_time": date.Format("yyyy-MM-dd 00:00:00"),
  340. 'type':team_type
  341. }
  342. getTeamClass(data,function(data){
  343. for(var i=0;i<$("select[id*='_term']").length;i++){
  344. $("select[id*='_term']").eq(i).val("");
  345. }
  346. if(data.length > 0){
  347. $("#save_term_class").data("modify_flag",1);
  348. for(var i=0;i<data.length;i++){
  349. $(".class_team_"+data[i].class_type).val(data[i].team_id);
  350. }
  351. }else{
  352. $("#save_term_class").data("modify_flag",0);
  353. }
  354. $('#myModal').modal();
  355. })
  356. }
  357. $('#calendar').calendar().on("clickCell.zui.calendar", function(event) {
  358. // console.log(event);
  359. click_function(event.date);
  360. });
  361. // 下一个日期
  362. $('#calendar').calendar().on("clickNextBtn.zui.calendar", function(event) {
  363. // console.log(event);
  364. date_cursor++ ;
  365. var data = {
  366. "dept_id": user_dept_id ,
  367. "start_time":getMonthByCondition(date_cursor,'first').Format("yyyy-MM-dd HH:mm:ss"),
  368. "end_time": getMonthByCondition(date_cursor,'last').Format("yyyy-MM-dd HH:mm:ss"),
  369. 'type':team_type
  370. }
  371. updateCalendar(data);
  372. });
  373. // 上一个日期
  374. $('#calendar').calendar().on("clickPrevBtn.zui.calendar", function(event) {
  375. date_cursor-- ;
  376. var data = {
  377. "dept_id": user_dept_id ,
  378. "start_time":getMonthByCondition(date_cursor,'first').Format("yyyy-MM-dd HH:mm:ss"),
  379. "end_time": getMonthByCondition(date_cursor,'last').Format("yyyy-MM-dd HH:mm:ss"),
  380. 'type':team_type
  381. }
  382. updateCalendar(data);
  383. });
  384. // 今天
  385. $('#calendar').calendar().on("clickTodayBtn.zui.calendar", function(event) {
  386. // console.log(event);
  387. date_cursor = 0 ;
  388. calendarInit();
  389. });
  390. $("#save_term_class").click(function(){
  391. var data = [];
  392. for(var i=0;i<$("select[id*='_term']").length;i++){
  393. if($("select[id*='_term']").eq(i).val()!=""){
  394. var end_time = $("#save_term_class").data("date")+" "+classCode[i+1].end_time+":00";
  395. if(i+1==3){
  396. var date = new Date($("#save_term_class").data("date").replace(/-/,"/"));
  397. date.setDate(date.getDate()+1);
  398. end_time = date.Format("yyyy-MM-dd")+" "+classCode[i+1].end_time+":00";
  399. }
  400. var obj = {
  401. "class_type":i+1,
  402. "team_id":$("select[id*='_term']").eq(i).val(),
  403. "work_date": $("#save_term_class").data("date")+" 00:00:00",
  404. "start_time": $("#save_term_class").data("date")+" "+ classCode[i+1].start_time+":00" ,
  405. "end_time": end_time,
  406. "dept_id":user_dept_id
  407. };
  408. console.log(obj);
  409. data.push(obj);
  410. }
  411. }
  412. if(data.length == 0 ){
  413. tip("请增加排班!");
  414. return ;
  415. }
  416. if( $("#save_term_class").data("modify_flag") != 1){
  417. post_common_service("teamClass/add/list",data,function(data){
  418. updateCalendar();
  419. $('#myModal').modal('hide');
  420. },function(error){
  421. $('#myModal').modal('hide');
  422. })
  423. }else{
  424. post_common_service("teamClass/update/list",data,function(data){
  425. updateCalendar();
  426. $('#myModal').modal('hide');
  427. },function(error){
  428. $('#myModal').modal('hide');
  429. })
  430. }
  431. })
  432. $(".close_btn").click(function(){
  433. $('#myModal,#add_fee_station').modal('hide');
  434. })
  435. // 获取部门为1的班组信息
  436. getTermClass(user_dept_id);
  437. // 获取班组信息
  438. function getTermClass(dept_id){
  439. var data = {
  440. 'dept_id':dept_id ,
  441. 'type':team_type
  442. }
  443. post_common_service( "team/getTeamByDeptId/1/50",data,function(data){
  444. for(var i=0;i<data.list.length;i++){
  445. $("#mooring_term,#middle_term,#night_term,#all_term").append("<option value='"+data.list[i].id+"'>"+data.list[i].name +"</option>")
  446. }
  447. },function(error){})
  448. }
  449. }
  450. // 根据class_type 获取班次名称
  451. function getTeamName(class_type){
  452. if(class_type == 1){
  453. return "早班";
  454. }else if(class_type == 2){
  455. return "中班";
  456. }else if(class_type == 3){
  457. return "晚班";
  458. }else if(class_type == 4){
  459. return "全班";
  460. }
  461. }
  462. function setAddTermTitle(title){
  463. $(".modal-title").html("添加班组-"+title);
  464. }