charge_team_schedule.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  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 data = {
  19. "dept_id": user_dept_id ,
  20. "start_time":getCurrentMonthFirst(),
  21. "end_time":getCurrentMonthLast(),
  22. 'type':team_type
  23. }
  24. if(data_param != undefined){
  25. data = data_param ;
  26. }
  27. getTeamClass(data,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].end_time};
  32. newEvents.push(obj);
  33. }
  34. // 这里轮训给每天都增加一个事件
  35. var date = new Date();
  36. var end_date =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. // 更新日历数据
  87. function updateCalendar(data){
  88. calendar.events = [];
  89. calendar.display();
  90. calendarInit(data);
  91. }
  92. // 当月第一天
  93. function getCurrentMonthFirst(){
  94. var date=new Date();
  95. date.setDate(1);
  96. return date.toLocaleDateString()+" 00:00:00";
  97. }
  98. // 当月最后一天
  99. function getCurrentMonthLast(){
  100. var date=new Date();
  101. var currentMonth=date.getMonth();
  102. var nextMonth=++currentMonth;
  103. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  104. var oneDay=1000*60*60*24;
  105. return new Date(nextMonthFirstDay-oneDay).toLocaleDateString()+" 00:00:00";
  106. }
  107. // 当月最后一天
  108. function getCurrentMonthLast2(){
  109. var date=new Date();
  110. var currentMonth=date.getMonth();
  111. var nextMonth=++currentMonth;
  112. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  113. var oneDay=1000*60*60*24;
  114. return new Date(nextMonthFirstDay-oneDay).toLocaleDateString()+" 23:59:00";
  115. }
  116. // 上一个月或者下个月的第一天或者最后一天
  117. function getMonthByCondition(pre_or_after,first_or_last){
  118. if(first_or_last == 'first'){
  119. var date=new Date();
  120. date.setDate(1);
  121. date.setMonth(date.getMonth()+pre_or_after);
  122. return date;
  123. }else if(first_or_last == 'last'){
  124. var date = new Date();
  125. var currentMonth=date.getMonth();
  126. var nextMonth=++currentMonth;
  127. var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
  128. var oneDay=1000*60*60*24;
  129. date = new Date(nextMonthFirstDay-oneDay);
  130. date.setMonth(date.getMonth()+pre_or_after);
  131. return date ;
  132. }
  133. }
  134. $("#save_user_class").click(function(){
  135. var dutyList = [];
  136. var work_date = $("#save_user_class").data("work_date");
  137. for(var j=1;j<4;j++){
  138. var cache = $(".tr-"+j).data("cache");
  139. if(cache) {
  140. for(var i=0;i<lans+1;i++){
  141. if($(".tr-"+j+" td select").eq(i).val()!='' ){
  142. 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":work_date, "end_time":work_date,"lane":$(".tr-"+j+" td select").eq(i).parent().attr('tag') };
  143. dutyList.push(obj);
  144. }
  145. }
  146. }
  147. }
  148. $("#save_user_class").attr("disabled","disabled");
  149. if($("#save_user_class").data("modify_flag")){
  150. $("#save_user_class").data("modify_flag",false);
  151. post_common_service( "userClass/updateList",dutyList,function(data){
  152. tip("修改成功");
  153. $('#add_fee_station').modal('hide');
  154. $("#save_user_class").attr("disabled",false );
  155. },function(error){
  156. return "" ;
  157. })
  158. return ;
  159. }
  160. post_common_service( "userClass/addList",dutyList,function(data){
  161. tip("添加成功");
  162. $('#add_fee_station').modal('hide');
  163. $("#save_user_class").attr("disabled",false );
  164. },function(error){
  165. return "" ;
  166. })
  167. })
  168. $('#calendar').calendar().on("clickEvent.zui.calendar", function(event) {
  169. // console.log(event。event.id);
  170. if(event.event.id == -1){
  171. // 这边负责添加整个页面的数据 按车道排班
  172. $('#add_fee_station').modal();
  173. $(".modal-title").html("收费站排班表-"+event.event.start.format("yyyy-MM-dd"));
  174. $("#save_user_class").data("work_date",event.event.start.format("yyyy-MM-dd 00:00:00"));
  175. var data = {
  176. "dept_id": user_dept_id ,
  177. "start_time":event.event.start.format("yyyy-MM-dd 00:00:00"),
  178. "end_time": event.event.start.format("yyyy-MM-dd 00:00:00"),
  179. 'type':team_type
  180. }
  181. post_common_service( "teamClass/getClassListAndUsers",data,function(data){
  182. $("#save_user_class").html("生成今日值班");
  183. $(".tr-1,.tr-2,.tr-3").empty();
  184. for(var i=0;i<data.length;i++){
  185. if(data[i].class_type == 1){
  186. $(".tr-1").data("cache",data[i]);
  187. $(".tr-1").append("<td>早班 6:00 - 12:00</td>");
  188. var selectv = "<select class='form-control'>"
  189. // console.log(data[i]);
  190. selectv += ("<option value=''>请选择人员</option>");
  191. for(var j=0;j<data[i].users.length;j++){
  192. var obj = data[i].users[j];
  193. selectv += ("<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>");
  194. }
  195. selectv += "</select>";
  196. // for(var z=0;z<lans+1;z++){
  197. // $(".tr-1").append("<td>"+ selectv +"</td>")
  198. // }
  199. $(".tr-1").append("<td class='c-1-0' tag='0'>"+ selectv +"</td>")
  200. for(var z=0;z<entrance_number;z++){
  201. $(".tr-1").append("<td class='c-1-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv +"</td>")
  202. }
  203. for(var z=0;z<exit_number;z++){
  204. $(".tr-1").append("<td class='c-1--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv +"</td>")
  205. }
  206. }else if(data[i].class_type == 2){
  207. $(".tr-2").append("<td>中班 12:00 - 20:00</td>");
  208. $(".tr-2").data("cache",data[i]);
  209. var selectv2 = "<select class='form-control'>"
  210. selectv2 += ("<option value=''>请选择人员</option>");
  211. for(var j=0;j<data[i].users.length;j++){
  212. if(data[i].users[j]!=null)
  213. selectv2 += ("<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>")
  214. }
  215. selectv2 += "</select>";
  216. // for(var z=0;z<lans+1;z++){
  217. // $(".tr-2").append("<td>"+ selectv2 +"</td>")
  218. // }
  219. $(".tr-2").append("<td class='c-2-0' tag='0'>"+ selectv2 +"</td>")
  220. for(var z=0;z<entrance_number;z++){
  221. $(".tr-2").append("<td class='c-2-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv2 +"</td>")
  222. }
  223. for(var z=0;z<exit_number;z++){
  224. $(".tr-2").append("<td class='c-2--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv2 +"</td>")
  225. }
  226. }else if(data[i].class_type == 3){
  227. $(".tr-3").append("<td>晚班 20:00 - 6:00</td>");
  228. $(".tr-3").data("cache",data[i]);
  229. var selectv3 = "<select class='form-control'>"
  230. selectv3 += ("<option value=''>请选择人员</option>");
  231. for(var j=0;j<data[i].users.length;j++){
  232. if(data[i].users[j]!=null)
  233. selectv3 += "<option value='"+data[i].users[j].id+"'>"+ data[i].users[j].truename +"</option>"
  234. }
  235. selectv3 += "</select>";
  236. $(".tr-3").append("<td class='c-3-0' tag='0'>"+ selectv3 +"</td>")
  237. for(var z=0;z<entrance_number;z++){
  238. $(".tr-3").append("<td class='c-3-"+(z+1)+"' tag='"+(z+1)+"'>"+ selectv3 +"</td>")
  239. }
  240. for(var z=0;z<exit_number;z++){
  241. $(".tr-3").append("<td class='c-3--"+(z+1)+"' tag='-"+(z+1)+"'>"+ selectv3 +"</td>")
  242. }
  243. // for(var z=0;z<lans+1;z++){
  244. // $(".tr-3").append("<td>"+ selectv3 +"</td>")
  245. // }
  246. }
  247. }
  248. if(data.length ==0){
  249. $(".tr-1").append("<td>早班 6:00 - 12:00</td>");
  250. $(".tr-2").append("<td>中班 12:00 - 20:00</td>");
  251. $(".tr-3").append("<td>晚班 20:00 - 6:00</td>");
  252. for(var i=0;i<lans+1;i++){
  253. $(".tr-1,.tr-2,.tr-3").append("<td></td>");
  254. }
  255. }else{
  256. var cache = $(".tr-1").data("cache");
  257. var work_date = $("#save_user_class").data("work_date");
  258. var param = {
  259. 'dept_id':user_dept_id,
  260. 'work_date':work_date
  261. }
  262. post_common_service( "userClass/getList",param,function(data){
  263. // 这边将值班数据检索出来,初始化收费站车道排班中
  264. // console.log(data);
  265. if(data.length > 0){
  266. $("#save_user_class").data("modify_flag",true);
  267. $("#save_user_class").html("修改今日值班");
  268. }else{
  269. $("#save_user_class").html("生成今日值班");
  270. $("#save_user_class").data("modify_flag",false);
  271. }
  272. // console.log(data);
  273. for(var i=0;i<data.length;i++){
  274. $(".c-"+data[i].class_type+"-"+data[i].lane+" select").val(data[i].user_id);
  275. // $(".table .tr-"+data[i].class_type+" select").eq(i%(lans+1)).val(data[i].user_id);
  276. }
  277. },function(error){
  278. return "" ;
  279. })
  280. }
  281. },function(error){
  282. return "" ;
  283. })
  284. }else{
  285. click_function(event.event.start);
  286. }
  287. });
  288. /**
  289. * 点击日历触发函数
  290. */
  291. function click_function(date){
  292. setAddTermTitle(date.format("yyyy-MM-dd"));
  293. // 保存当前日期
  294. $("#save_term_class").data("date",date.format("yyyy-MM-dd"));
  295. var data = {
  296. "dept_id": user_dept_id ,
  297. "start_time":date.format("yyyy-MM-dd 00:00:00"),
  298. "end_time": date.format("yyyy-MM-dd 00:00:00"),
  299. 'type':team_type
  300. }
  301. getTeamClass(data,function(data){
  302. for(var i=0;i<$("select[id*='_term']").length;i++){
  303. $("select[id*='_term']").eq(i).val("");
  304. }
  305. if(data.length > 0){
  306. $("#save_term_class").data("modify_flag",1);
  307. for(var i=0;i<data.length;i++){
  308. $(".class_team_"+data[i].class_type).val(data[i].team_id);
  309. }
  310. }else{
  311. $("#save_term_class").data("modify_flag",0);
  312. }
  313. $('#myModal').modal();
  314. })
  315. }
  316. $('#calendar').calendar().on("clickCell.zui.calendar", function(event) {
  317. // console.log(event);
  318. click_function(event.date);
  319. });
  320. // 下一个日期
  321. $('#calendar').calendar().on("clickNextBtn.zui.calendar", function(event) {
  322. // console.log(event);
  323. date_cursor++ ;
  324. var data = {
  325. "dept_id": user_dept_id ,
  326. "start_time":getMonthByCondition(date_cursor,'first').format("yyyy-MM-dd 00:00:00"),
  327. "end_time": getMonthByCondition(date_cursor,'last').format("yyyy-MM-dd 00:00:00"),
  328. 'type':team_type
  329. }
  330. updateCalendar(data);
  331. });
  332. // 上一个日期
  333. $('#calendar').calendar().on("clickPrevBtn.zui.calendar", function(event) {
  334. date_cursor-- ;
  335. var data = {
  336. "dept_id": user_dept_id ,
  337. "start_time":getMonthByCondition(date_cursor,'first').format("yyyy-MM-dd 00:00:00"),
  338. "end_time": getMonthByCondition(date_cursor,'last').format("yyyy-MM-dd 00:00:00"),
  339. 'type':team_type
  340. }
  341. updateCalendar(data);
  342. });
  343. // 今天
  344. $('#calendar').calendar().on("clickTodayBtn.zui.calendar", function(event) {
  345. // console.log(event);
  346. date_cursor = 0 ;
  347. calendarInit();
  348. });
  349. $("#save_term_class").click(function(){
  350. var data = [];
  351. for(var i=0;i<$("select[id*='_term']").length;i++){
  352. if($("select[id*='_term']").eq(i).val()!=""){
  353. var obj = {
  354. "class_type":i+1,
  355. "team_id":$("select[id*='_term']").eq(i).val(),
  356. "work_date": $("#save_term_class").data("date")+" 00:00:00",
  357. "start_time": $("#save_term_class").data("date")+" 00:00:00",
  358. "end_time": $("#save_term_class").data("date")+" 00:00:00",
  359. "dept_id":user_dept_id
  360. };
  361. data.push(obj);
  362. }
  363. }
  364. if(data.length == 0 ){
  365. tip("请增加排班!");
  366. return ;
  367. }
  368. if( $("#save_term_class").data("modify_flag") != 1){
  369. post_common_service("teamClass/add/list",data,function(data){
  370. updateCalendar();
  371. $('#myModal').modal('hide');
  372. },function(error){
  373. $('#myModal').modal('hide');
  374. })
  375. }else{
  376. post_common_service("teamClass/update/list",data,function(data){
  377. updateCalendar();
  378. $('#myModal').modal('hide');
  379. },function(error){
  380. $('#myModal').modal('hide');
  381. })
  382. }
  383. })
  384. $(".close_btn").click(function(){
  385. $('#myModal,#add_fee_station').modal('hide');
  386. })
  387. // 获取部门为1的班组信息
  388. getTermClass(user_dept_id);
  389. // 获取班组信息
  390. function getTermClass(dept_id){
  391. var data = {
  392. 'dept_id':dept_id ,
  393. 'type':team_type
  394. }
  395. post_common_service( "team/getTeamByDeptId/1/50",data,function(data){
  396. for(var i=0;i<data.list.length;i++){
  397. $("#mooring_term,#middle_term,#night_term,#all_term").append("<option value='"+data.list[i].id+"'>"+data.list[i].name +"</option>")
  398. }
  399. },function(error){})
  400. }
  401. }
  402. // 根据class_type 获取班次名称
  403. function getTeamName(class_type){
  404. if(class_type == 1){
  405. return "早班";
  406. }else if(class_type == 2){
  407. return "中班";
  408. }else if(class_type == 3){
  409. return "晚班";
  410. }else if(class_type == 4){
  411. return "全班";
  412. }
  413. }
  414. function setAddTermTitle(title){
  415. $(".modal-title").html("添加班组-"+title);
  416. }