/** * 初始化跨城站点管理详情对话框 */ var TLineInfoDlg = { tLineInfoData : {}, validateFields: { name: { validators: { notEmpty: { message: '线路名称不能为空' } } }, startSiteId: { validators: { notEmpty: { message: '请选择起点' } } }, endSiteId: { validators: { notEmpty: { message: '请选择终点' } } }, shiftInterval: { validators: { notEmpty: { message: '司机申请限制分钟数不能为空' }, regexp: { regexp: /^[0-9]{0,3}$/, message: '司机申请限制分钟数格式不正确' } } }, rakeRate: { validators: { notEmpty: { message: '抽成比例不能为空' }, regexp: { regexp: /^([0-9]{1,2}$)|(^[0-9]{1,2}\.[0-9]{1,2}$)|100$/, message: '抽成比例格式不正确' } } }, } }; /** * 验证数据是否为空 */ TLineInfoDlg.validate = function () { $('#lineInfoForm').data("bootstrapValidator").resetForm(); $('#lineInfoForm').bootstrapValidator('validate'); return $("#lineInfoForm").data('bootstrapValidator').isValid(); }; /** * 清除数据 */ TLineInfoDlg.clearData = function() { this.tLineInfoData = {}; } /** * 设置对话框中的数据 * * @param key 数据的名称 * @param val 数据的具体值 */ TLineInfoDlg.set = function(key, val) { this.tLineInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; return this; } /** * 设置对话框中的数据 * * @param key 数据的名称 * @param val 数据的具体值 */ TLineInfoDlg.get = function(key) { return $("#" + key).val(); } /** * 关闭此对话框 */ TLineInfoDlg.close = function() { parent.layer.close(window.parent.TLine.layerIndex); } TLineInfoDlg.set1 = function (e) { console.log("---------------"+e) let index = layer.open({ type: 2, title: '抽成设置', area: ['80%', '80%'], //宽高 fix: false, //不固定 maxmin: true, content: Feng.ctxPath + '/tLine/set/'+e }); this.layerIndex = index; }; TLineInfoDlg.set2 = function (e) { console.log("---------------"+e) let index = layer.open({ type: 2, title: '抽成设置', area: ['80%', '80%'], //宽高 fix: false, //不固定 maxmin: true, content: Feng.ctxPath + '/tLine/set1/'+e }); this.layerIndex = index; }; /** * 收集数据 */ TLineInfoDlg.collectData = function() { this .set('id') .set('name') .set('shiftInterval') .set('dispatchPhone') .set('rakeRate') .set('state') .set('insertTime') .set('outSetting'); } /** * 提交添加 */ TLineInfoDlg.addSubmit = function(e) { this.clearData(); this.collectData(); if(!this.validate()){ return ; } var startSiteId = $("#startSiteId").val(); var endSiteId = $("#endSiteId").val(); var subArr=[]; $(".typeValueClass").each(function () { subArr.push({ serverModelId:$(this).find("input[name*='serverModelIdValue']").val(), type:$(this).find("input[name*='typeValue']").val(), time:$(this).find("input[name*='timeValue']").val(), content:$(this).find("input[name*='contentValue']").val(), contentStr:$(this).find("input[name*='contentStrValue']").val(), }) }); if(subArr.length <= 0){ Feng.error("请至少设置一条价格设置"); return; } if(!TLineInfoDlg.validateShiftCarNum()){ return; } var shuArr=[]; $(".shiftValueClass").each(function () { shuArr.push({ shiftTime:$(this).find("input[name*='shiftTimeValue']").val(), carNum:$(this).find("input[name*='carNumValue']").val(), time2:$(this).find("input[name*='time2Value']").val(), }) }) if(shuArr.length <= 0){ Feng.error("请至少设置一条班次设置"); return; } $(e).attr('disabled','disabled'); //点击后就禁用,若想再次点击需刷新页面; //提交信息 var ajax = new $ax(Feng.ctxPath + "/tLine/add", function(data){ $(e).removeAttr('disabled'); if(data.status == 200){ Feng.success("添加成功!"); window.parent.TLine.table.refresh(); TLineInfoDlg.close(); }else{ Feng.error(data.msg); } },function(data){ Feng.error("添加失败!" + data.responseJSON.message + "!"); }); ajax.set(this.tLineInfoData); ajax.set("startSiteId",startSiteId); ajax.set("endSiteId",endSiteId); ajax.set("subArr",JSON.stringify(subArr)); ajax.set("shuArr",JSON.stringify(shuArr)); ajax.start(); } /** * 提交修改 */ TLineInfoDlg.editSubmit = function() { this.clearData(); this.collectData(); if(!this.validate()){ return ; } var startSiteId = $("#startSiteId").val(); var endSiteId = $("#endSiteId").val(); var subArr=[]; $(".typeValueClass").each(function () { subArr.push({ serverModelId:$(this).find("input[name*='serverModelIdValue']").val(), type:$(this).find("input[name*='typeValue']").val(), time:$(this).find("input[name*='timeValue']").val(), content:$(this).find("input[name*='contentValue']").val(), contentStr:$(this).find("input[name*='contentStrValue']").val(), }) }); if(subArr.length <= 0){ Feng.error("请至少设置一条价格设置"); return; } if(!TLineInfoDlg.validateShiftCarNum()){ return; } var shuArr=[]; $(".shiftValueClass").each(function () { shuArr.push({ shiftTime:$(this).find("input[name*='shiftTimeValue']").val(), carNum:$(this).find("input[name*='carNumValue']").val(), time2:$(this).find("input[name*='time2Value']").val(), }) }) if(shuArr.length <= 0){ Feng.error("请至少设置一条班次设置"); return; } //提交信息 var ajax = new $ax(Feng.ctxPath + "/tLine/update", function(data){ if(data.status == 200){ Feng.success("修改成功!"); window.parent.TLine.table.refresh(); TLineInfoDlg.close(); }else{ Feng.error(data.msg); } },function(data){ Feng.error("修改失败!" + data.responseJSON.message + "!"); }); ajax.set(this.tLineInfoData); ajax.set("startSiteId",startSiteId); ajax.set("endSiteId",endSiteId); ajax.set("subArr",JSON.stringify(subArr)); ajax.set("shuArr",JSON.stringify(shuArr)); ajax.start(); } //添加公司提交 TLineInfoDlg.addCompanySubmit = function(){ var comArr=[]; $(".companyValueClass").each(function () { comArr.push({ companyId:$(this).find("input[name*='companyIdValue']").val(), }) }) /*if(comArr.length <= 0){ Feng.error("请至少添加一个企业"); return; }*/ //提交信息 var ajax = new $ax(Feng.ctxPath + "/tLine/addCompany", function(data){ Feng.success("操作成功!"); window.parent.TLine.table.refresh(); TLineInfoDlg.close(); },function(data){ Feng.error("操作失败!" + data.responseJSON.message + "!"); }); ajax.set("lineId",$("#lineId").val()); ajax.set("comArr",JSON.stringify(comArr)); ajax.start(); } $(function() { Feng.initValidator("lineInfoForm", TLineInfoDlg.validateFields); }); /** * 计价方式改变时 * @param e */ TLineInfoDlg.typeClick = function (e) { if (1 == e){ $("#fixedDiv").show(); $("#floatDiv").hide(); } else if (2 == e){ $("#floatDiv").show(); $("#fixedDiv").hide(); } } /** * 添加价格 */ TLineInfoDlg.addPrice = function () { var serverModelId = $("#serverModelId").val(); var serverModelText = $("#serverModelId option:selected").text(); if ("" == serverModelId){ Feng.info("请选择车型"); return; } var type = $("input[name='type']:checked").val(); var content = ''; var contentStr = ""; if (1 == type){ var num1 = $("#num1").val(); var num2 = $("#num2").val(); var num3 = $("#num3").val(); var num4 = $("#num4").val(); if(null == num1 || '' == num1 || null == num2 || '' == num2 || null == num3 || '' == num3 || null == num4 || '' == num4){ Feng.info("固定计价格式不正确!"); return; } // if(!regDouble.test(num1) || !regDouble.test(num2) || !regXiShu.test(num3) || !regXiShu.test(num4)){ // Feng.info("固定计价格式不正确!"); // return; // } content = '{"num1":"'+num1+'","num2":"'+num2+'","num3":"'+num3+'","num4":"'+num4+'"}'; contentStr = "单人价格:"+num1+";包车价格:"+num2+";五座系数:"+num3+";七座系数:"+num4+";"; } else if (2 == type){ var num11 = $("#num11").val(); var num12 = $("#num12").val(); var num13 = $("#num13").val(); var num14 = $("#num14").val(); var num15 = $("#num15").val(); var num16 = $("#num16").val(); var num17 = $("#num17").val(); var num18 = $("#num18").val(); if(null == num11 || '' == num11 || null == num12 || '' == num12 || null == num13 || '' == num13 || null == num14 || '' == num14 || null == num15 || '' == num15 || null == num16 || '' == num16 || null == num17 || '' == num17 || null == num18 || '' == num18){ Feng.info("浮动计价格式不正确!"); return; } // if(!regDouble.test(num11) || !regDouble.test(num12) || !regDouble.test(num13) || !regXiShu1.test(num14) || !regXiShu.test(num15) || !regXiShu.test(num16) || !regXiShu.test(num17) || !regXiShu.test(num18)){ // Feng.info("浮动计价格式不正确!"); // return; // } content = '{"num1":"'+num11+'","num2":"'+num12+'","num3":"'+num13+'","num4":"'+num14+'","num5":"'+num15+'","num6":"'+num16+'","num7":"'+num17+'","num8":"'+num18+'"}'; contentStr = "参考价格:"+num11+";参考里程:"+num12+";保底价:"+num13+";超出参考里程优惠系数:"+num14+";低于参考里程优惠系数:"+num15+";包车系数:"+num16+";五座系数:"+num17+";七座系数:"+num18+";"; } var subArr=[]; $(".typeValueClass").each(function () { subArr.push({ serverModelId:$(this).find("input[name*='serverModelIdValue']").val(), type:$(this).find("input[name*='typeValue']").val(), time:$(this).find("input[name*='timeValue']").val(), content:$(this).find("input[name*='contentValue']").val(), contentStr:$(this).find("input[name*='contentStrValue']").val(), }) }); //判断车型是否存在 for(var i=0;i' + getNowFormatDate() + '' + ''+serverModelText+'' + '' + ' ' + ' '+contentStr+'' + ''; $("#priceValue").append(str); //清除数据 $("#serverModelId").val(""); if (1 == type){ $("#num1").val(""); $("#num2").val(""); $("#num3").val(""); $("#num4").val(""); } else if (2 == type){ $("#num11").val(""); $("#num12").val(""); $("#num13").val(""); $("#num14").val(""); $("#num15").val(""); $("#num16").val(""); $("#num17").val(""); $("#num18").val(""); } } /** * 添加班次 */ TLineInfoDlg.addShift = function () { var shiftTime = $("#shiftTime").val(); if ("" == shiftTime){ Feng.info("请选择班次时间区间"); return; } var carNum = $("#carNum").val(); if ("" == carNum){ Feng.info("请填写车次数"); return; }else if (!regInt.test(carNum)){ Feng.info("车次数格式不正确"); return; }else if (parseInt(carNum, 10) <= 0){ Feng.info("车次数必须为正整数"); return; } times = shiftTime.split(" - "); var time1 = times[0]; var time2 = times[1]; if (time1 >= time2) { Feng.info("开始时间不能大于结束时间"); return; } var shuArr=[]; $(".shiftValueClass").each(function () { shuArr.push({ shiftTime:$(this).find("input[name*='shiftTimeValue']").val(), carNum:$(this).find("input[name*='carNumValue']").val(), time2:$(this).find("input[name*='time2Value']").val(), }) }) //判断时间是否存在 for(var i=0;i' + getNowFormatDate() + '' + ''+shiftTime+'' + '' + '' + '' + '' + '' + '' + ''; $("#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 + "条班次"); } } /** * 添加公司 */ TLineInfoDlg.addCompany = function () { var companyId = $("#companyId").val(); var companyText = $("#companyId option:selected").text(); if ("" == companyId){ Feng.info("请选择企业"); return; } var comArr=[]; $(".companyValueClass").each(function () { comArr.push({ companyId:$(this).find("input[name*='companyIdValue']").val(), }) }) //判断公司是否存在 for(var i=0;i'+companyText+'' + ''; $("#companyValue").append(str); //清除数据 $("#companyId").val(""); } function deleteSub(e) { $(e).parent().parent().remove(); }