| | |
| | | Feng.error("请至少设置一条价格设置"); |
| | | return; |
| | | } |
| | | if(!TLineInfoDlg.validateShiftCarNum()){ |
| | | return; |
| | | } |
| | | var shuArr=[]; |
| | | $(".shiftValueClass").each(function () { |
| | | shuArr.push({ |
| | |
| | | }); |
| | | if(subArr.length <= 0){ |
| | | Feng.error("请至少设置一条价格设置"); |
| | | return; |
| | | } |
| | | if(!TLineInfoDlg.validateShiftCarNum()){ |
| | | return; |
| | | } |
| | | var shuArr=[]; |
| | |
| | | }else if (!regInt.test(carNum)){ |
| | | Feng.info("车次数格式不正确"); |
| | | return; |
| | | }else if (parseInt(carNum, 10) <= 0){ |
| | | Feng.info("车次数必须为正整数"); |
| | | return; |
| | | } |
| | | |
| | | times = shiftTime.split(" - "); |
| | |
| | | return; |
| | | } |
| | | } |
| | | //封装数据 |
| | | var str = '<tr class="shiftValueClass">' + |
| | | '<td style="text-align: center;"><input type="hidden" id="time2Value" name="time2Value" value="'+getNowFormatDate()+'">' + getNowFormatDate() + '</td>' + |
| | | '<td style="text-align: center;"><input type="hidden" id="shiftTimeValue" name="shiftTimeValue" value="'+shiftTime+'">'+shiftTime+'</td>' + |
| | | '<td style="text-align: center;"><input type="hidden" id="carNumValue" name="carNumValue" value="'+carNum+'">'+carNum+'</td>' + |
| | | '<td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td></tr>'; |
| | | $("#shiftValue").append(str); |
| | | TLineInfoDlg.appendShiftRow(shiftTime, carNum); |
| | | //清除数据 |
| | | $("#shiftTime").val(""); |
| | | $("#carNum").val(""); |
| | | } |
| | | |
| | | TLineInfoDlg.appendShiftRow = function (shiftTime, carNum) { |
| | | var str = '<tr class="shiftValueClass">' + |
| | | '<td style="text-align: center;"><input type="hidden" id="time2Value" name="time2Value" value="'+getNowFormatDate()+'">' + getNowFormatDate() + '</td>' + |
| | | '<td style="text-align: center;"><input type="hidden" id="shiftTimeValue" name="shiftTimeValue" value="'+shiftTime+'">'+shiftTime+'</td>' + |
| | | '<td style="text-align: center;">' + |
| | | '<input type="hidden" id="carNumValue" name="carNumValue" value="'+carNum+'">' + |
| | | '<button type="button" onclick="TLineInfoDlg.changeCarNum(this,-1)">-</button>' + |
| | | '<input type="text" name="carNumEditValue" value="'+carNum+'" oninput="TLineInfoDlg.onCarNumInput(this)" onblur="TLineInfoDlg.onCarNumBlur(this)" style="width:60px;text-align:center;margin:0 6px;">' + |
| | | '<button type="button" onclick="TLineInfoDlg.changeCarNum(this,1)">+</button>' + |
| | | '</td>' + |
| | | '<td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td></tr>'; |
| | | $("#shiftValue").append(str); |
| | | } |
| | | |
| | | TLineInfoDlg.normalizePositiveInt = function (numStr) { |
| | | var onlyNum = (numStr || "").replace(/[^\d]/g, ""); |
| | | onlyNum = onlyNum.replace(/^0+/, ""); |
| | | return onlyNum; |
| | | } |
| | | |
| | | TLineInfoDlg.syncCarNumValue = function (input) { |
| | | var $input = $(input); |
| | | var value = TLineInfoDlg.normalizePositiveInt($input.val()); |
| | | $input.val(value); |
| | | $input.closest("td").find("input[name='carNumValue']").val(value); |
| | | } |
| | | |
| | | TLineInfoDlg.onCarNumInput = function (input) { |
| | | TLineInfoDlg.syncCarNumValue(input); |
| | | } |
| | | |
| | | TLineInfoDlg.onCarNumBlur = function (input) { |
| | | var $input = $(input); |
| | | var value = TLineInfoDlg.normalizePositiveInt($input.val()); |
| | | if (value == "" || parseInt(value, 10) <= 0) { |
| | | value = "1"; |
| | | } |
| | | $input.val(value); |
| | | $input.closest("td").find("input[name='carNumValue']").val(value); |
| | | } |
| | | |
| | | TLineInfoDlg.changeCarNum = function (btn, step) { |
| | | var $td = $(btn).closest("td"); |
| | | var $input = $td.find("input[name='carNumEditValue']"); |
| | | var value = TLineInfoDlg.normalizePositiveInt($input.val()); |
| | | var num = parseInt(value, 10); |
| | | if (isNaN(num) || num <= 0) { |
| | | num = 1; |
| | | } |
| | | num = num + step; |
| | | if (num <= 0) { |
| | | num = 1; |
| | | } |
| | | $input.val(num); |
| | | $td.find("input[name='carNumValue']").val(num); |
| | | } |
| | | |
| | | TLineInfoDlg.validateShiftCarNum = function () { |
| | | var valid = true; |
| | | $(".shiftValueClass").each(function () { |
| | | var $row = $(this); |
| | | var $editInput = $row.find("input[name='carNumEditValue']"); |
| | | if ($editInput.length > 0) { |
| | | TLineInfoDlg.onCarNumBlur($editInput[0]); |
| | | } |
| | | var carNum = $row.find("input[name*='carNumValue']").val(); |
| | | if (!/^[1-9]\d*$/.test(carNum)) { |
| | | valid = false; |
| | | return false; |
| | | } |
| | | }); |
| | | if (!valid) { |
| | | Feng.error("班次车次数必须为正整数"); |
| | | } |
| | | return valid; |
| | | } |
| | | |
| | | TLineInfoDlg.toMinutes = function (timeStr) { |
| | | var arr = timeStr.split(":"); |
| | | return parseInt(arr[0], 10) * 60 + parseInt(arr[1], 10); |
| | | } |
| | | |
| | | TLineInfoDlg.toTimeStr = function (minutes) { |
| | | var h = Math.floor(minutes / 60); |
| | | var m = minutes % 60; |
| | | return (h < 10 ? "0" + h : "" + h) + ":" + (m < 10 ? "0" + m : "" + m); |
| | | } |
| | | |
| | | /** |
| | | * 批量生成班次 |
| | | * 规则: |
| | | * 第一次:始发时间 - 始发时间+间隔 |
| | | * 后续:上次后段时间 - 后段时间+间隔 |
| | | */ |
| | | TLineInfoDlg.generateShiftList = function () { |
| | | var firstShiftTime = $("#firstShiftTime").val(); |
| | | var lastShiftTime = $("#lastShiftTime").val(); |
| | | var shiftGap = $("#shiftGap").val(); |
| | | var batchCarNum = $("#batchCarNum").val(); |
| | | |
| | | if (firstShiftTime == "") { |
| | | Feng.info("请选择始发时间"); |
| | | return; |
| | | } |
| | | if (lastShiftTime == "") { |
| | | Feng.info("请选择末班时间"); |
| | | return; |
| | | } |
| | | if (shiftGap == "") { |
| | | Feng.info("请选择间隔时间"); |
| | | return; |
| | | } |
| | | if (batchCarNum == "") { |
| | | Feng.info("请填写每班车次数"); |
| | | return; |
| | | } |
| | | if (!regInt.test(batchCarNum)) { |
| | | Feng.info("车次数格式不正确"); |
| | | return; |
| | | } |
| | | if (parseInt(batchCarNum, 10) <= 0) { |
| | | Feng.info("车次数必须为正整数"); |
| | | return; |
| | | } |
| | | |
| | | var startMinute = TLineInfoDlg.toMinutes(firstShiftTime); |
| | | var lastMinute = TLineInfoDlg.toMinutes(lastShiftTime); |
| | | var gap = parseInt(shiftGap, 10); |
| | | |
| | | if (startMinute > lastMinute) { |
| | | Feng.info("始发时间不能大于末班时间"); |
| | | return; |
| | | } |
| | | |
| | | var existsMap = {}; |
| | | $(".shiftValueClass").each(function () { |
| | | var shiftTimeValue = $(this).find("input[name*='shiftTimeValue']").val(); |
| | | if (shiftTimeValue) { |
| | | shiftTimeValue = shiftTimeValue.replace(/\s+/g, ""); |
| | | } |
| | | existsMap[shiftTimeValue] = true; |
| | | }); |
| | | |
| | | var currentStart = startMinute; |
| | | var generated = 0; |
| | | var duplicate = 0; |
| | | while (currentStart <= lastMinute) { |
| | | var currentEnd = currentStart + gap; |
| | | if (currentEnd > 24 * 60) { |
| | | break; |
| | | } |
| | | var shiftTime = TLineInfoDlg.toTimeStr(currentStart) + " - " + TLineInfoDlg.toTimeStr(currentEnd); |
| | | var shiftTimeKey = shiftTime.replace(/\s+/g, ""); |
| | | if (!existsMap[shiftTimeKey]) { |
| | | TLineInfoDlg.appendShiftRow(shiftTime, batchCarNum); |
| | | existsMap[shiftTimeKey] = true; |
| | | generated++; |
| | | } else { |
| | | duplicate++; |
| | | } |
| | | currentStart = currentEnd; |
| | | } |
| | | |
| | | if (generated == 0) { |
| | | Feng.info("未生成新班次,班次时间可能已存在"); |
| | | return; |
| | | } |
| | | |
| | | if (duplicate > 0) { |
| | | Feng.success("已生成" + generated + "条班次,跳过重复" + duplicate + "条"); |
| | | } else { |
| | | Feng.success("已生成" + generated + "条班次"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加公司 |
| | | */ |