charge_team_schedule.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. // $(document).ready(function() {
  2. // initChargeTeamSchedule()
  3. // })
  4. var user_dept_id = null;
  5. function initChargeTeamSchedule() {
  6. // $("#main_content_title").html("收费人员排班")
  7. var user = $.zui.store.get("user"); // 缓存用户信息,取出dept_id
  8. // 用户的dept_id
  9. user_dept_id = user.organid;
  10. // 收费小组type
  11. var team_type = 1;
  12. // 日期游标
  13. var date_cursor = 0;
  14. $('#calendar').calendar();
  15. var calendar = $('#calendar').data('zui.calendar');
  16. calendarInit();
  17. // 请求收费人员排班数据
  18. function calendarInit(data_param) {
  19. var datap = {
  20. "dept_id": user_dept_id,
  21. "start_time": getMonthByCondition(date_cursor, 'first').Format("yyyy-MM-dd HH:mm:ss"), //getCurrentMonthFirst(),
  22. "end_time": getMonthByCondition(date_cursor, 'last').Format("yyyy-MM-dd HH:mm:ss"), //getCurrentMonthLast(),
  23. 'type': team_type
  24. }
  25. if (data_param != undefined) {
  26. datap = data_param;
  27. }
  28. getTeamClass(datap, function(data) {
  29. var newEvents = [];
  30. for (var i = 0; i < data.length; i++) {
  31. var obj = '';
  32. if (data[i].class_type == 1) {
  33. obj = { id: data[i].id, desc: data[i].team_name, title: data[i].team_name + "-" + getTeamName(data[i].class_type), start: data[i].end_time + ":02", end: data[i].end_time + ":03" };
  34. } else if (data[i].class_type == 2) {
  35. obj = { id: data[i].id, desc: data[i].team_name, title: data[i].team_name + "-" + getTeamName(data[i].class_type), start: data[i].end_time + ":01", end: data[i].end_time + ":02" };
  36. } else {
  37. obj = { id: data[i].id, desc: data[i].team_name, title: data[i].team_name + "-" + getTeamName(data[i].class_type), start: data[i].end_time + ":03", end: data[i].end_time + ":04" };
  38. }
  39. newEvents.push(obj);
  40. }
  41. // 这里轮训给每天都增加一个事件
  42. var date = getMonthByCondition(date_cursor, 'first'); //new Date();
  43. var end_date = getMonthByCondition(date_cursor, 'last'); //new Date(getCurrentMonthLast2()) ;
  44. if (data_param != undefined) {
  45. date = new Date(data_param.start_time);
  46. end_date = new Date(data_param.end_time);
  47. }
  48. for (var i = 0; i < 31; i++) {
  49. if (date.setDate(i + 1) < end_date) {
  50. var obj = { id: -1, desc: '详细排班', title: '+详细排班', start: date.Format('yyyy-MM-dd 00:00:05'), end: date.Format('yyyy-MM-dd 00:00:06'), color: '#bd7b46' };
  51. newEvents.push(obj);
  52. }
  53. }
  54. calendar.addEvents(newEvents);
  55. })
  56. }
  57. // 获取排班信息
  58. function getTeamClass(data, _function) {
  59. post_common_service("teamClass/getClassList", data, function(data) {
  60. _function(data);
  61. }, function(error) {
  62. return "";
  63. })
  64. }
  65. getStation();
  66. var lans = 0;
  67. var entrance_number = 0;
  68. var exit_number = 0;
  69. // 获取收费站信息
  70. function getStation() {
  71. get_common_service("dept/getFsByDept", "", function(data) {
  72. if (data != null) {
  73. $(".thread_charge").append("<th>" + data.name + "</th>");
  74. $(".thread_charge").append("<th>值机班长</th>");
  75. //灌南东
  76. if (user_dept_id == 35) {
  77. $(".thread_charge").append("<th>收费班长(老)</th>");
  78. $(".thread_charge").append("<th>收费班长(新)</th>");
  79. } else {
  80. $(".thread_charge").append("<th>收费班长</th>");
  81. }
  82. $(".thread_charge").append("<th>值班室</th>");
  83. // console.log(data);
  84. lans = data.lanes_number;
  85. entrance_number = data.entrance_numer;
  86. exit_number = data.exit_numer;
  87. // for(var i=0;i<data.lanes_number;i++){
  88. // $(".thread_charge").append("<th>进口车道"+(i+1)+"</th>");
  89. // }
  90. for (var i = 0; i < entrance_number; i++) {
  91. if (i == 1 && user_dept_id == 34) {
  92. $(".thread_charge").append("<th>入口" + 9 + "</th>");
  93. } else {
  94. $(".thread_charge").append("<th>入口" + (i + 1) + "</th>");
  95. }
  96. }
  97. for (var i = 0; i < exit_number; i++) {
  98. $(".thread_charge").append("<th>出口" + (i + 1) + "</th>");
  99. }
  100. }
  101. }, function(error) {
  102. return "";
  103. })
  104. }
  105. getClassCode();
  106. var classCode = {};
  107. /**
  108. * 获取班组信息
  109. */
  110. function getClassCode() {
  111. var data = {};
  112. post_common_service("teamClass/getClassCode", data, function(data) {
  113. for (var i = 0; i < data.length; i++) {
  114. classCode[data[i].code] = data[i];
  115. }
  116. // console.log(classCode);
  117. $(".class_type_1").html(classCode[1].class_name);
  118. $(".class_type_2").html(classCode[2].class_name);
  119. $(".class_type_3").html(classCode[3].class_name);
  120. }, function(error) {
  121. return "";
  122. })
  123. }
  124. // 更新日历数据
  125. function updateCalendar(data) {
  126. calendar.events = [];
  127. calendar.display();
  128. calendarInit(data);
  129. }
  130. // 当月第一天
  131. function getCurrentMonthFirst() {
  132. var date = new Date();
  133. date.setDate(1);
  134. date.setHours(0);
  135. date.setMinutes(0);
  136. date.setSeconds(0);
  137. return date.Format("yyyy-MM-dd HH:mm:ss");
  138. }
  139. // 当月最后一天
  140. function getCurrentMonthLast() {
  141. var date = new Date();
  142. var currentMonth = date.getMonth();
  143. var nextMonth = ++currentMonth;
  144. var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  145. var oneDay = 1000 * 60 * 60 * 24;
  146. var date1 = new Date(nextMonthFirstDay - oneDay);
  147. date1.setHours(23);
  148. date1.setMinutes(59);
  149. date1.setSeconds(59);
  150. return date1.Format("yyyy-MM-dd HH:mm:ss");
  151. }
  152. // 当月最后一天
  153. function getCurrentMonthLast2() {
  154. var date = new Date();
  155. var currentMonth = date.getMonth();
  156. var nextMonth = ++currentMonth;
  157. var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  158. var oneDay = 0; //1000*60*60*24;
  159. var date1 = new Date(nextMonthFirstDay - oneDay);
  160. date1.setHours(0);
  161. date1.setMinutes(0);
  162. date1.setSeconds(0);
  163. return date1.Format("yyyy-MM-dd HH:mm:ss");
  164. }
  165. // 上一个月或者下个月的第一天或者最后一天
  166. function getMonthByCondition(pre_or_after, first_or_last) {
  167. if (first_or_last == 'first') {
  168. var date = new Date();
  169. date.setDate(1);
  170. date.setHours(0);
  171. date.setMinutes(0);
  172. date.setSeconds(0);
  173. date.setMonth(date.getMonth() + pre_or_after);
  174. return date;
  175. } else if (first_or_last == 'last') {
  176. var date = new Date();
  177. date.setMonth(date.getMonth() + pre_or_after); //此处月份加减,不能放到最后加减,会引起月份天数不对
  178. var currentMonth = date.getMonth();
  179. var nextMonth = ++currentMonth;
  180. var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  181. var date1 = nextMonthFirstDay;
  182. date1.setDate(date1.getDate() - 1);
  183. date1.setHours(23);
  184. date1.setMinutes(59);
  185. date1.setSeconds(59);
  186. return date1;
  187. }
  188. }
  189. /**
  190. * 顶班日期
  191. */
  192. function date_time() {
  193. $.jeDate("#start_time", {
  194. format: "hh:mm:00",
  195. isinitVal: true,
  196. zIndex: 99999999
  197. });
  198. $.jeDate("#end_time", {
  199. format: "hh:mm:00",
  200. isinitVal: true,
  201. zIndex: 99999999
  202. });
  203. }
  204. date_time();
  205. $("#save_user_class").click(function() {
  206. $("#save_user_class").addClass("disabled");
  207. getCodeByFlagAndValue("record_class_days", 1, function(data) {
  208. $("#save_user_class").removeClass("disabled");
  209. var days = 1;
  210. if (data && data.code_name) {
  211. days = data.code_name;
  212. }
  213. var now_date = moment(nowStr).toDate(); //new Date();
  214. now_date.setDate(now_date.getDate() - days);
  215. if (now_date.Format('yyyy-MM-dd') >= $("#save_user_class").data("work_date").trim()) {
  216. tip("不能生成过期的排班");
  217. return;
  218. }
  219. var dutyList = [];
  220. var work_date = $("#save_user_class").data("work_date") + "00:00:00";
  221. for (var j = 1; j < 4; j++) {
  222. var cache = $(".tr-" + j).data("cache");
  223. var zhiji_m_id = $(".c-" + j + "_0 select").val();
  224. var station_m_id = $(".c-" + j + "_1 select").val();
  225. var station_m_id1 = null;
  226. if (user_dept_id == 35) {
  227. station_m_id1 = $(".c-" + j + "_2 select").val();
  228. if (station_m_id1 == "" || station_m_id1 == null || typeof(station_m_id1) == "undefined") {
  229. station_m_id1 = 0;
  230. }
  231. }
  232. if (zhiji_m_id == "" || zhiji_m_id == null || typeof(zhiji_m_id) == "undefined") {
  233. zhiji_m_id = 0;
  234. }
  235. if (station_m_id == "" || station_m_id == null || typeof(station_m_id) == "undefined") {
  236. station_m_id = 0;
  237. }
  238. if (user_dept_id == 35) {
  239. station_m_id1 = parseInt(station_m_id1)
  240. }
  241. zhiji_m_id = parseInt(zhiji_m_id)
  242. station_m_id = parseInt(station_m_id)
  243. if (cache) {
  244. var n_c = 2;
  245. if (user_dept_id == 35) {
  246. n_c = 3;
  247. }
  248. for (var i = 2; i < lans + 1 + n_c; i++) {
  249. if ($(".tr-" + j + " td select").eq(i).val() != '' && $(".tr-" + j + " td select").eq(i).val() != null) {
  250. var start_time = $("#save_user_class").data("work_date") + classCode[j].start_time + ":00";
  251. if (j == 3) {
  252. var date = new Date($("#save_user_class").data("work_date").replace(/-/, "/"));
  253. date.setDate(date.getDate() - 1);
  254. start_time = date.Format("yyyy-MM-dd") + " " + classCode[j].start_time + ":00";
  255. }
  256. var end_time = $("#save_user_class").data("work_date") + classCode[j].end_time + ":00";
  257. var lane_id = $(".tr-" + j + " td select").eq(i).parent().attr('tag');
  258. if (lane_id == null || typeof(lane_id) == "undefined") {
  259. continue;
  260. }
  261. var m_id = station_m_id
  262. if (lane_id == 0) {
  263. m_id = zhiji_m_id;
  264. } else {
  265. if (user_dept_id == 35) {
  266. if (Math.abs(lane_id) <= 2) {
  267. m_id = station_m_id;
  268. } else {
  269. m_id = station_m_id1;
  270. }
  271. }
  272. }
  273. var list = $(".tr-" + j + " td select").eq(i).data("data");
  274. var obj = { "list": list, "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": lane_id, "monitor_user_id": m_id };
  275. console.log(obj)
  276. dutyList.push(obj);
  277. }
  278. }
  279. }
  280. }
  281. $("#save_user_class").attr("disabled", "disabled");
  282. if ($("#save_user_class").data("modify_flag")) {
  283. $("#save_user_class").data("modify_flag", false);
  284. post_common_service("userClass/updateList", dutyList, function(data) {
  285. tip("修改成功");
  286. $('#add_fee_station').modal('hide');
  287. $("#save_user_class").attr("disabled", false);
  288. }, function(error) {
  289. return "";
  290. })
  291. return;
  292. }
  293. post_common_service("userClass/addList", dutyList, function(data) {
  294. tip("添加成功");
  295. $('#add_fee_station').modal('hide');
  296. $("#save_user_class").attr("disabled", false);
  297. }, function(error) {
  298. return "";
  299. })
  300. })
  301. })
  302. var cols = [{ width: 60, text: '序号', type: 'number', flex: false, colClass: 'text-center' },
  303. { width: 130, text: '开始时间', type: 'string', flex: false, colClass: 'text-center' },
  304. { width: 130, text: '结束时间', type: 'string', flex: false, sort: 'down', colClass: 'text-center' },
  305. { width: 130, text: '人员姓名', type: 'string', flex: false, colClass: 'text-center' },
  306. { width: 230, text: '操作', type: 'string', flex: false, colClass: 'text-center' }
  307. ];
  308. $('.datatable').datatable({
  309. checkable: false,
  310. sortable: false,
  311. data: {
  312. cols: cols,
  313. rows: []
  314. }
  315. });
  316. var temp_data;
  317. // 更新表格数据
  318. function updateTableData(obj) {
  319. var rowdata = [];
  320. if (obj != null && obj.length > 0) {
  321. for (var i = 0; i < obj.length; i++) {
  322. var userdata = {};
  323. userdata["checked"] = false;
  324. userdata["data"] = [i + 1, obj[i].start_time, obj[i].end_time, obj[i].user_name, ' <button class="btn btn-primary btn_remove" value=' + i + ' ><i class="icon icon-remove-circle"></i>删除</button>'];
  325. rowdata.push(userdata);
  326. }
  327. }
  328. $('.datatable').datatable('load', {
  329. cols: cols,
  330. rows: rowdata
  331. });
  332. }
  333. $(".datatable").delegate(".btn_remove", "click", function() {
  334. var bind_data = temp_data;
  335. // alert($(this).val())
  336. if ($(this).val() != null && $(this).val() != '') {
  337. bind_data.splice($(this).val(), 1)
  338. // $(".add-btn").data("data",bind_data);
  339. temp_data = bind_data;
  340. updateTableData(temp_data);
  341. }
  342. })
  343. var time_interval_obj = "";
  344. $(".table").delegate(".i-self", "click", function() {
  345. $("#team_info_ti").html($(this).prev().html());
  346. $(".save_class_info").data("data", $(this).prev());
  347. // 将时间区间值的span 对象缓存起来
  348. time_interval_obj = $(this).parent().parent().children().eq(0).children();
  349. //console.log(time_interval_obj);
  350. temp_data = $(this).prev().data("data");
  351. $("#lists").show();
  352. $("#add_update").hide();
  353. updateTableData(temp_data);
  354. showPopup4CommonBtns("添加顶班详情", "720px", "#add_detail_info", "", function() {
  355. }, function() {})
  356. })
  357. // 增加按钮
  358. $(".add-btn").click(function() {
  359. $("#team_info_ti").val("");
  360. $("#lists").hide();
  361. $("#add_update").show();
  362. $("#start_time").val(time_interval_obj.eq(1).html() + ':00');
  363. $("#end_time").val(time_interval_obj.eq(2).html() + ':00');
  364. })
  365. // 保存班组信息
  366. $(".save_class_info").click(function() {
  367. $(".save_class_info").data("data").data("data", temp_data);
  368. layer.closeAll();
  369. })
  370. $(".return-btn").click(function() {
  371. $("#lists").show();
  372. $("#add_update").hide();
  373. })
  374. // 保存
  375. $("#save_btn").click(function() {
  376. var bind_data = temp_data;
  377. if (bind_data == null) {
  378. bind_data = [];
  379. }
  380. // 判断时间区间
  381. // $(".modal-title span").html()
  382. var start_time_interval = $(".modal-title span").html() + ' ' + time_interval_obj.eq(1).html() + ":00";
  383. var end_time_interval = $(".modal-title span").html() + ' ' + time_interval_obj.eq(2).html() + ":00";
  384. var id = $("#team_info_ti").val();
  385. var start_time = $(".modal-title span").html() + ' ' + $("#start_time").val();
  386. var end_time = $(".modal-title span").html() + ' ' + $("#end_time").val();
  387. var name = $("#team_info_ti").find("option:selected").text();
  388. if (start_time_interval > end_time_interval) {
  389. var prev_date = new Date((start_time_interval).replace(/-/, "/"));
  390. prev_date.setDate(prev_date.getDate() - 1);
  391. start_time_interval = prev_date.Format("yyyy-MM-dd HH:mm:ss");
  392. if ($("#start_time").val() >= '23:00:00') {
  393. prev_date = new Date((start_time).replace(/-/, "/"));
  394. prev_date.setDate(prev_date.getDate() - 1);
  395. start_time = prev_date.Format("yyyy-MM-dd HH:mm:00");
  396. }
  397. if ($("#end_time").val() > '23:00:00') {
  398. prev_date = new Date((end_time).replace(/-/, "/"));
  399. prev_date.setDate(prev_date.getDate() - 1);
  400. end_time = prev_date.Format("yyyy-MM-dd HH:mm:00");
  401. }
  402. }
  403. // alert( 'start_time:'+start_time + 'end_time:'+end_time + 'start_time_i:'+start_time_interval +'end_time_i:'+end_time_interval );
  404. if (start_time >= end_time) {
  405. tip("时间设置不合理,开始时间不能大于结束时间");
  406. return;
  407. }
  408. if (!(start_time >= start_time_interval && end_time <= end_time_interval)) {
  409. tip("不是当前值班时间段");
  410. return;
  411. }
  412. // 这边需要判断一下,时间不能重叠
  413. for (var i = 0; i < bind_data.length; i++) {
  414. if (!(start_time >= bind_data[i].end_time || end_time <= bind_data[i].start_time)) {
  415. tip("设置的时间不能重叠");
  416. return;
  417. }
  418. }
  419. if (id != "" && start_time != '' && end_time != '') {
  420. bind_data.push({ "user_name": name, "start_time": start_time, "end_time": end_time, "id": id });
  421. temp_data = bind_data;
  422. $("#lists").show();
  423. $("#add_update").hide();
  424. updateTableData(temp_data);
  425. } else {
  426. tip("信息需填写完整");
  427. }
  428. })
  429. $('#calendar').calendar().on("clickEvent.zui.calendar", function(event) {
  430. // console.log(event。event.id);
  431. if (event.event.id == -1) {
  432. // 这边负责添加整个页面的数据 按车道排班
  433. $('#add_fee_station').modal({ 'backdrop': 'static' });
  434. $(".modal-title").html("收费站排班表-<span>" + event.event.start.Format("yyyy-MM-dd") + "</span>");
  435. $("#save_user_class").data("work_date", event.event.start.Format("yyyy-MM-dd "));
  436. var data = {
  437. "dept_id": user_dept_id,
  438. "start_time": event.event.start.Format("yyyy-MM-dd 00:00:00"),
  439. "end_time": event.event.start.Format("yyyy-MM-dd 00:00:00"),
  440. 'type': team_type
  441. }
  442. post_common_service("teamClass/getClassListAndUsers", data, function(data) {
  443. $("#save_user_class").html("生成今日值班");
  444. $(".tr-1,.tr-2,.tr-3").empty();
  445. console.error(data)
  446. for (var i = 0; i < data.length; i++) {
  447. var ct = data[i].class_type;
  448. $(".tr-" + ct).data("cache", data[i]);
  449. $(".tr-" + ct).append("<td vertical-align='middle' align='center' style='width:140px;background:#F8F8F8;'><span style='font-weight:bold;'>" + classCode[ct].class_name + "<br></span><span>" + classCode[ct].start_time + "</span> - <span>" + classCode[ct].end_time + "</span></td>");
  450. var selectv = "<select class='form-control select-self' style='width:100px;'>"
  451. selectv += ("<option value=''>请选择</option>");
  452. selectv += ("<option value='0'>临时开道</option>");
  453. for (var j = 0; j < data[i].users.length; j++) {
  454. var obj = data[i].users[j];
  455. selectv += ("<option value='" + data[i].users[j].id + "'>" + data[i].users[j].truename + "</option>");
  456. }
  457. selectv += "</select>";
  458. var selectv1 = selectv;
  459. selectv1 = selectv1.replace("<option value='0'>临时开道</option>", "");
  460. selectv1 = selectv1.replace("<option value=''>请选择</option>", "<option value='0'>请选择</option>");
  461. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "_0' >" + selectv1 + "</td>")
  462. if (user_dept_id == 35) {
  463. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "_1' >" + selectv1 + "</td>");
  464. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "_2' >" + selectv1 + "</td>");
  465. } else {
  466. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "_1' >" + selectv1 + "</td>");
  467. }
  468. selectv += "<i title='顶班详情' alt='顶班详情' class='icon icon-tags i-self' style='float:right;margin-top:7px;'></i>";
  469. selectv += "<ul style='padding:0px;'></ul>"
  470. var selectv2 = selectv;
  471. selectv2 = selectv2.replace("<option value='0'>临时开道</option>", "");
  472. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "-0' tag='0'>" + selectv2 + "</td>")
  473. for (var z = 0; z < entrance_number; z++) {
  474. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "-" + (z + 1) + "' tag='" + (z + 1) + "'>" + selectv + "</td>")
  475. }
  476. for (var z = 0; z < exit_number; z++) {
  477. $(".tr-" + ct).append("<td style='vertical-align:top;width:137px;padding:2px;' class='c-" + ct + "--" + (z + 1) + "' tag='-" + (z + 1) + "'>" + selectv + "</td>")
  478. }
  479. }
  480. if (data.length == 0) {
  481. $(".tr-1").append("<td>" + classCode["1"].class_name + " " + classCode["1"].start_time + " - " + classCode["1"].end_time + "</td>");
  482. $(".tr-2").append("<td>" + classCode[2].class_name + " " + classCode[2].start_time + " - " + classCode[2].end_time + "</td>");
  483. $(".tr-3").append("<td>" + classCode[3].class_name + " " + classCode[3].start_time + " - " + classCode[3].end_time + "</td>");
  484. var n_c = 2;
  485. if (user_dept_id == 35) {
  486. n_c = 3;
  487. }
  488. for (var i = 0; i < lans + 1 + n_c; i++) {
  489. $(".tr-1,.tr-2,.tr-3").append("<td></td>");
  490. }
  491. } else {
  492. var cache = $(".tr-1").data("cache");
  493. var work_date = $("#save_user_class").data("work_date") + "00:00:00";
  494. var param = {
  495. 'dept_id': user_dept_id,
  496. 'work_date': work_date
  497. }
  498. post_common_service("userClass/getList", param, function(data) {
  499. // 这边将值班数据检索出来,初始化收费站车道排班中
  500. // console.log(data);
  501. if (data.length > 0) {
  502. $("#save_user_class").data("modify_flag", true);
  503. $("#save_user_class").html("修改今日值班");
  504. } else {
  505. $("#save_user_class").html("生成今日值班");
  506. $("#save_user_class").data("modify_flag", false);
  507. }
  508. for (var i = 0; i < data.length; i++) {
  509. // console.log(data[i].list)
  510. // 这边需要把id转换成user_id
  511. var m_id = data[i].monitor_user_id;
  512. m_id = m_id <= 0 ? 0 : m_id;
  513. if (data[i].list != null)
  514. $(".c-" + data[i].class_type + "-" + data[i].lane + " select").data("data", data[i].list);
  515. var liStr = "";
  516. for (var mm = 0; mm < data[i].list.length; mm++) {
  517. var obj = data[i].list[mm];
  518. liStr += "<li style='list-style-type:none;font-size:12px;color:#777777'>" + obj.start_time.substr(11, 5) + "-" + obj.end_time.substr(11, 5) + " " + obj.user_name + "</li>";
  519. }
  520. $(".c-" + data[i].class_type + "-" + data[i].lane + " ul").append(liStr);
  521. for (var j = 0; j < data[i].list.length; j++) {
  522. data[i].list[j].id = data[i].list[j].user_id;
  523. }
  524. var aim_selector = $(".c-" + data[i].class_type + "-" + data[i].lane + " select");
  525. var zhiji_m_id = $(".c-" + data[i].class_type + "_0 select");
  526. var station_m_id = $(".c-" + data[i].class_type + "_1 select");
  527. var station_m_id1 = null;
  528. if (user_dept_id == 35) {
  529. station_m_id1 = $(".c-" + data[i].class_type + "_2 select");
  530. }
  531. if (data[i].lane == 0) {
  532. zhiji_m_id.val(m_id);
  533. } else {
  534. if (user_dept_id == 35) {
  535. if (Math.abs(data[i].lane) <= 2) {
  536. station_m_id.val(m_id)
  537. } else {
  538. station_m_id1.val(m_id)
  539. }
  540. } else {
  541. station_m_id.val(m_id);
  542. }
  543. }
  544. aim_selector.val(data[i].user_id);
  545. if (aim_selector.find("option:selected").text() == '') {
  546. aim_selector.append("<option value='" + data[i].user_id + "' selected='selected'>" + data[i].user_name + "</option>")
  547. }
  548. // $(".table .tr-"+data[i].class_type+" select").eq(i%(lans+1)).val(data[i].user_id);
  549. }
  550. }, function(error) {
  551. return "";
  552. })
  553. }
  554. }, function(error) {
  555. return "";
  556. })
  557. } else {
  558. click_function(event.event.start);
  559. }
  560. });
  561. /**
  562. * 点击日历触发函数
  563. */
  564. function click_function(date) {
  565. setAddTermTitle(date.Format("yyyy-MM-dd"));
  566. // 保存当前日期
  567. $("#save_term_class").data("date", date.Format("yyyy-MM-dd"));
  568. var data = {
  569. "dept_id": user_dept_id,
  570. "start_time": date.Format("yyyy-MM-dd 00:00:00"),
  571. "end_time": date.Format("yyyy-MM-dd 00:00:00"),
  572. 'type': team_type
  573. }
  574. getTeamClass(data, function(data) {
  575. for (var i = 0; i < $("select[id*='_term']").length; i++) {
  576. $("select[id*='_term']").eq(i).val("");
  577. }
  578. if (data.length > 0) {
  579. $("#save_term_class").data("modify_flag", 1);
  580. for (var i = 0; i < data.length; i++) {
  581. $(".class_team_" + data[i].class_type).val(data[i].team_id);
  582. }
  583. } else {
  584. $("#save_term_class").data("modify_flag", 0);
  585. }
  586. $('#myModal').modal();
  587. })
  588. }
  589. $('#calendar').calendar().on("clickCell.zui.calendar", function(event) {
  590. // console.log(event);
  591. click_function(event.date);
  592. });
  593. // 下一个日期
  594. $('#calendar').calendar().on("clickNextBtn.zui.calendar", function(event) {
  595. // console.log(event);
  596. date_cursor++;
  597. var data = {
  598. "dept_id": user_dept_id,
  599. "start_time": getMonthByCondition(date_cursor, 'first').Format("yyyy-MM-dd HH:mm:ss"),
  600. "end_time": getMonthByCondition(date_cursor, 'last').Format("yyyy-MM-dd HH:mm:ss"),
  601. 'type': team_type
  602. }
  603. updateCalendar(data);
  604. });
  605. // 上一个日期
  606. $('#calendar').calendar().on("clickPrevBtn.zui.calendar", function(event) {
  607. date_cursor--;
  608. var data = {
  609. "dept_id": user_dept_id,
  610. "start_time": getMonthByCondition(date_cursor, 'first').Format("yyyy-MM-dd HH:mm:ss"),
  611. "end_time": getMonthByCondition(date_cursor, 'last').Format("yyyy-MM-dd HH:mm:ss"),
  612. 'type': team_type
  613. }
  614. updateCalendar(data);
  615. });
  616. // 今天
  617. $('#calendar').calendar().on("clickTodayBtn.zui.calendar", function(event) {
  618. // console.log(event);
  619. date_cursor = 0;
  620. calendarInit();
  621. });
  622. $("#save_term_class").click(function() {
  623. $("#save_term_class").addClass("disabled");
  624. getCodeByFlagAndValue("record_class_days", 1, function(data) {
  625. $("#save_term_class").removeClass("disabled");
  626. var days = 1;
  627. if (data && data.code_name) {
  628. days = data.code_name;
  629. }
  630. var now_date = moment(nowStr).toDate(); //new Date();
  631. now_date.setDate(now_date.getDate() - days);
  632. // 判断当前时间和待添加班组时间判断
  633. // now_date.setDate(now_date.getDate() - 1);
  634. if (now_date.Format('yyyy-MM-dd') >= $("#save_term_class").data("date").trim()) {
  635. tip("不能生成过期的排班");
  636. return;
  637. }
  638. var data = [];
  639. for (var i = 0; i < $("select[id*='_term']").length; i++) {
  640. if ($("select[id*='_term']").eq(i).val() != "") {
  641. // 这边需要转换一下,关于值
  642. var team_type_value = 1;
  643. if (i == 0) {
  644. team_type_value = 3;
  645. } else if (i == 1) {
  646. team_type_value = 1;
  647. } else {
  648. team_type_value = 2;
  649. }
  650. var start_time = $("#save_term_class").data("date") + " " + classCode[team_type_value].start_time + ":00";
  651. if (i == 0) {
  652. var date = new Date($("#save_term_class").data("date").replace(/-/, "/"));
  653. date.setDate(date.getDate() - 1);
  654. start_time = date.Format("yyyy-MM-dd") + " " + classCode[team_type_value].start_time + ":00";
  655. }
  656. var obj = {
  657. "class_type": team_type_value,
  658. "team_id": $("select[id*='_term']").eq(i).val(),
  659. "work_date": $("#save_term_class").data("date") + " 00:00:00",
  660. "start_time": start_time,
  661. "end_time": $("#save_term_class").data("date") + " " + classCode[team_type_value].end_time + ":00",
  662. "dept_id": user_dept_id,
  663. "user_type": 1 //表示收费站
  664. };
  665. data.push(obj);
  666. }
  667. }
  668. if (data.length == 0) {
  669. tip("请增加排班!");
  670. return;
  671. }
  672. if ($("#save_term_class").data("modify_flag") != 1) {
  673. post_common_service("teamClass/add/list", data, function(data) {
  674. updateCalendar();
  675. $('#myModal').modal('hide');
  676. }, function(error) {
  677. $('#myModal').modal('hide');
  678. })
  679. } else {
  680. post_common_service("teamClass/update/list", data, function(data) {
  681. updateCalendar();
  682. $('#myModal').modal('hide');
  683. }, function(error) {
  684. $('#myModal').modal('hide');
  685. })
  686. }
  687. })
  688. })
  689. $(".close_btn").click(function() {
  690. $('#myModal,#add_fee_station').modal('hide');
  691. })
  692. // 获取部门为1的班组信息
  693. getTermClass(user_dept_id);
  694. // 获取班组信息
  695. function getTermClass(dept_id) {
  696. var data = {
  697. 'dept_id': dept_id,
  698. 'type': team_type
  699. }
  700. post_common_service("team/getTeamByDeptId/1/50", data, function(data) {
  701. for (var i = 0; i < data.list.length; i++) {
  702. $("#mooring_term,#middle_term,#night_term,#all_term").append("<option value='" + data.list[i].id + "'>" + data.list[i].name + "</option>")
  703. }
  704. }, function(error) {})
  705. }
  706. }
  707. // 根据class_type 获取班次名称
  708. function getTeamName(class_type) {
  709. if (class_type == 1) {
  710. return "早班";
  711. } else if (class_type == 2) {
  712. return "中班";
  713. } else if (class_type == 3) {
  714. return "夜班";
  715. } else if (class_type == 4) {
  716. return "全班";
  717. }
  718. }
  719. function setAddTermTitle(title) {
  720. $(".modal-title").html("添加班组-" + title);
  721. }