<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <%@ taglib prefix="tags" tagdir="/WEB-INF/tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>全网监控智能分析平台</title> <style> .table-null .table{ margin-bottom: 0px; } .table-null .table > tbody > tr > td, .table-null .table > thead > tr > th{ text-align: center; width: 25%; } .table-null td:first-child{ text-align: right; width: 36%; } .table-null tr td:last-child .form-control,.table-null tr td:last-child table{ width: 400px; } </style> <script type="text/javascript" src="${ctx}/static/js/validation.js"></script> <script language="javascript" type="text/javascript"> var sandboxOptions = new Array(); var recoverOptions = new Array(); var dataModelOptions = new Array(); var minuteOption = new Array(); var hourOption = new Array(); var dayOption = new Array(); var monthOption = new Array(); var provinceOptions = new Array(); var datasourceOptions = new Array(); var channelOptions = new Array(); var businessOptions = new Array(); var kpiOptions = new Array(); $(document).ready(function() { changeInputStatus('parallelFlg', 'parallelNums'); changeInputStatus('sendmailFlg', 'mailAddress'); <c:forEach items="${sanboxList}" var="taskDetail"> var option = new Option('${taskDetail.name}','${taskDetail.taskInfoId}'); sandboxOptions.push(option); </c:forEach> <c:forEach items="${recoverList}" var="taskDetail"> var option = new Option('${taskDetail.name}','${taskDetail.taskInfoId}'); recoverOptions.push(option); </c:forEach> <c:forEach items="${dataModelList}" var="dataModel"> <c:if test="${dataModel.modelStatus != 0}"> var option = new Option('${dataModel.dataModelName}','${dataModel.dataModelId}'); dataModelOptions.push(option); </c:if> </c:forEach> $('#modelId').append(dataModelOptions); <c:forEach items="${provinceList}" var="province"> var option = new Option('${province.provinceName}','${province.provinceId}'); provinceOptions.push(option); </c:forEach> $('#provinceId').append(provinceOptions); <c:forEach items="${datasourceList}" var="datasource" varStatus="status"> var option = new Option('${datasource.dataSourceName}','${datasource.dataSourceId}'); datasourceOptions.push(option); <c:if test ="${status.first}"> <c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap" > <c:if test ="${channelDataSourceMap.dataSourceId == datasource.dataSourceId}"> var channelName = ""; <c:forEach items="${channelList}" var="channel" varStatus="channelStatus"> <c:if test="${channel.channelId == channelDataSourceMap.channelId}" > var channelOption = new Option('${channel.channelName}','${channel.channelId}'); channelOptions.push(channelOption); </c:if> </c:forEach> </c:if> </c:forEach> </c:if> </c:forEach> $('#datasourceViewId').append(datasourceOptions); $('#channelId').append(channelOptions); function changeBusinessData(){ $('#businessId').empty(); businessOptions=[]; <c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap"> if('${channelDataSourceMap.channelId}' == $("#channelId").val() && '${channelDataSourceMap.dataSourceId}' == $("#datasourceViewId").val()){ <c:forEach items="${businessList}" var="business"> <c:if test="${business.channelDataSourceMapId == channelDataSourceMap.channelDataSourceMapId && business.isActive =='Y' }"> var option = new Option('${business.businessName}','${business.businessId}'); businessOptions.push(option); </c:if> </c:forEach> } </c:forEach> $('#businessId').append(businessOptions); } changeBusinessData(); function changeKPIData(){ var businessId = $("#businessId").val(); $.ajax({ type : 'GET', contentType : 'application/json', url: "${ctx}/BaseManage/TaskManage/findKpiByBusiness?businessId="+businessId, dataType : 'text', beforeSend: function(data) {}, success: function(data) { $('#KPIViewId').empty(); data = JSON.parse(data); data.forEach(function(t){ var option = new Option(t.name,t.kpiId); $('#KPIViewId').append(option); }) } }); } changeKPIData(); <c:forEach items="${dataModelParameterList}" var="dataModelParameter"> var tr = "<tr id='${dataModelParameter.parameterId}'><td>${dataModelParameter.parameterName}</td><td><input type='text' class='parameterValue' name='parameterValue' value='${dataModelParameter.parameterValue}'/></td><td>${dataModelParameter.parameterDataType}</td></tr>"; $('#addTr').append(tr); </c:forEach> changeTaskType(); $('#modelId').val('${runTask.dataModelView.dataModelId}'); $('#detailSelect').val('${runTask.taskDetail.taskInfoId}'); for(var i=1;i<=60;i++) { var option = new Option(i,i); minuteOption.push(option); } for(var i=1;i<=12;i++) { var option = new Option(i,i); hourOption.push(option); } for(var i=1;i<=31;i++) { var option = new Option(i,i); dayOption.push(option); } for(var i=1;i<=12;i++) { var option = new Option(i,i); monthOption.push(option); } changeFrequencyType(); if($('#frequencyValueHidden').val()) { $('#frequencyValue').val($('#frequencyValueHidden').val()); } $('#modelId').change(function(){ var modelId = $('#modelId').val(); $.ajax({ type : 'GET', contentType : 'application/json', url: "${ctx}/BaseManage/TaskManage/getModelParameterList?modelId="+modelId, dataType : 'text', beforeSend: function(data) {}, success: function(data) { $('#addTr').empty(); data = JSON.parse(data) data.forEach(function(t){ var tr = "<tr id='"+t.parameterId+"'><td>"+t.parameterName+"</td><td><input type='text' class='parameterValue' value='"+t.parameterValue+"'/></td><td>"+t.parameterDataType+"</td></tr>"; $('#addTr').append(tr); }) } }); }); $('#datasourceViewId').change(function(){ $("#channelId").empty(); channelOptions =[]; <c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap" > if('${channelDataSourceMap.dataSourceId}'==$("#datasourceViewId").val()){ var channelName = ""; <c:forEach items="${channelList}" var="channel" > <c:if test="${channel.channelId == channelDataSourceMap.channelId}" > var channelOption = new Option('${channel.channelName}','${channel.channelId}'); channelOptions.push(channelOption); </c:if> </c:forEach> } </c:forEach> $('#channelId').append(channelOptions); changeBusinessData(); changeKPIData() }); $('#channelId').change(function(){ changeBusinessData(); changeKPIData() }) $('#businessId').change(function(){ changeKPIData() }) }); function changeInputStatus(eleId, objId) { $('#' + objId).attr('disabled', !$('#' + eleId).attr('checked')); } function submitForm() { var url = '${ctx}/BaseManage/TaskManage/checkNameAndCode'; var data = 'name=' + $('#name').val() + "&code=" + $('#code').val() + "&id=" + $('#taskId').val() + "&defaultTaskType=" + $('#defaultTaskType').val() ; /* if(!checkFrequency()) { alert("运行频率允许的值为整数、小数、分数和格式为ADD_MONTHS(x)的字符串,其中x可以为整数、小数、分数"); $('#frequency').focus(); return; } */ if (validate()) { var i = $("#addTr").find("tr").size(); if(i==0){ checkAndSubmit(url, encodeURI(encodeURI(data))); }else { $("#addTr").find("tr").each(function () { //alert($(this).find("td").eq(0).html()); var paramId = $(this).context.id; var modelId = $('#modelId').val(); var paramName = $(this).find("td").eq(0).html(); var paramValue = $(this).find("td").eq(1).find("input").val(); var paramType = $(this).find("td").eq(2).html(); var taskId = $('#taskId').val(); $.ajax({ type: "GET", contentType: "application/json", url: "${ctx}/BaseManage/TaskManage/createModelParam?useType="+$("#useType").val()+"¶mId="+paramId+"&modelId="+encodeURIComponent(modelId)+"¶mName=" + encodeURIComponent(paramName) + "¶mValue=" + encodeURIComponent(paramValue) + "¶mType=" + paramType + "&taskId=" + taskId, dataType: "text", async: false, beforeSend: function (data) { }, success: function () { i--; if (i == 0) { checkAndSubmit(url, encodeURI(encodeURI(data))); } } }); }); } } } function checkFrequency() { if($('#frequency').val()) { var frequency = $('#frequency').val().toLowerCase(); if(frequency.indexOf("add_months(") == 0 && frequency.indexOf(")") >0) { frequency = frequency.substring('add_months('.length, frequency.indexOf(")")); } return checkNumber(frequency); } return true; } function checkNumber(value) { if(value.indexOf("/") > 0) { var numerator = value.substring(0, value.indexOf("/")); var denominator = value.substring(value.indexOf("/") + 1, value.length); if(denominator + 0 == 0 ) { return false; } return checkNumberAndFloat(numerator) && checkNumberAndFloat(denominator); } else { return checkNumberAndFloat(value); } return true; } function checkNumberAndFloat(value) { var reg1 = new RegExp("([0-9]+\.?[0-9])[0-9]*"); var reg2 = new RegExp("^(0|[1-9][0-9]*)$"); if(!reg1.test(value) && !reg2.test(value)) { return false; } return true; } function changeTaskType() { if($('#taskType').val() == '1') { //模型任务 showModel(); } else if($('#taskType').val() == '2') {//数据恢复任务 showDetail(); showRecover(); $('#taskContextArea').attr('disabled',true); $('#taskContext').val('ds_datarecovery.pl'); $('#taskContextArea').val('ds_datarecovery.pl'); $('#taskContext').attr('name', 'taskContext'); $('#taskContextArea').attr('name', ''); $('#frequencyRow').css("display", "none"); $('#taskMaxTimesRow').css("display", "none"); $('#detailRow').css("display", ""); } else if($('#taskType').val() == '3'){ //沙盒任务 showDetail(); showSanbox(); $('#taskContextArea').attr('disabled',true); $('#taskContext').val('ds_datarecovery_shahe.pl'); $('#taskContextArea').val('ds_datarecovery_shahe.pl'); $('#taskContext').attr('name', 'taskContext'); $('#taskContextArea').attr('name', ''); } else { showDetail(); showSanbox(); if($('#taskContextArea').attr('disabled')) { $('#taskContextArea').attr('disabled',false); $('#taskContext').val(''); $('#taskContextArea').val(''); } $('#taskContext').attr('name', ''); $('#taskContextArea').attr('name', 'taskContext'); $('#frequencyRow').css("display", ""); $('#taskMaxTimesRow').css("display", ""); $('#detailRow').css("display", "none"); } } function showModel() { $('#detailLabel').addClass("hidden"); $('#detailDiv').addClass("hidden"); $('#modelLabel').removeClass("hidden"); $('#modelDiv').removeClass("hidden"); } function showDetail() { $('#detailDiv').removeClass("hidden"); $('#detailLabel').removeClass("hidden"); $('#modelLabel').addClass("hidden"); $('#modelDiv').addClass("hidden"); } function showSanbox() { $('#detailSelect').empty(); $('#detailSelect').append(sandboxOptions); } function showRecover() { $('#detailSelect').empty(); $('#detailSelect').append(recoverOptions); } function validate() { if(!checkNameAndCode()) { return false; } if(!$('#taskNextrunTime').val()) { alert("请填写下次运行时间"); return false; } if(!isNumber($('#frequency'))) { return false; } if(!isNumber($('#taskMaxTimes'))) { return false; } return true; } function changeFrequencyType() { var frequencyType = $("#frequencyType option:selected").val(); $('#frequencyValue').empty(); if(frequencyType == 1) { $('#frequencyValue').append(minuteOption); $('#frequencyValue').val('15') } else if(frequencyType == 2) { $('#frequencyValue').append(hourOption); } else if(frequencyType == 3) { $('#frequencyValue').append(dayOption); } else if(frequencyType == 4) { $('#frequencyValue').append(monthOption); } } function abandonTask(){ $.ajax({ type: "GET", contentType: "application/json", url: "${ctx}/BaseManage/TaskManage/taskDeleteFrame?taskId="+$('#taskId').val(), dataType: "text", async: false, beforeSend: function (data) { }, success: function () { window.location.href='${ctx}/BaseManage/TaskManage/taskListFrame?defaultTaskType=${runTask.defaultTaskType}' } }); } </script> </head> <body> <div id="main-tab-container"> <div id="content"> <div class="section"> <div class="tab-content"> <div class="row me-row"> <!-- this is for emulating position fixed of the nav --> <!-- /scroller-inner --> <!-- Top Navigation --> <div class="content clearfix"> <div class="row"> <div class="col-xs-12"> <form id="detailForm" class="form-horizontal" role="form" action="${ctx}/BaseManage/TaskManage/submitTaskFrame" method="post"> <input type="hidden" id="taskId" name="taskId" value="${runTask.taskId}"> <input type="hidden" id="useType" value="${useType}"> <input type="hidden" id="defaultTaskType" name="defaultTaskType" value="${runTask.defaultTaskType}"> <c:if test="${empty runTask.taskId}"> <input type="hidden" name="taskStatus" value="1"> <input type="hidden" name="taskRunStatus" value="2"> </c:if> <c:if test="${not empty runTask.taskId}"> <input type="hidden" name="taskStatus" value="${runTask.taskStatus}"> <input type="hidden" name="taskRunStatus" value="${runTask.taskStatus}"> </c:if> <table class="table-null"> <tr> <td>任务名称(<font color="red">必填</font>):</td> <td><input class="form-control input-sm" id="name" name="name" value="${runTask.name}"></td> </tr> <tr> <td>任务代码(<font color="red">必填</font>):</td> <td><input type="input" class="form-control input-sm" id="code" name="code" value="${runTask.code}"></td> </tr> <c:if test="${runTask.defaultTaskType == 1 || runTask.defaultTaskType == 5 }"> <tr> <td id="provinceLabel">省份:</td> <td id="provinceDiv"> <select class="form-control input-sm" id="provinceId" name="provinceView.provinceId"> </select> </td> </tr> <tr> <td id="dataSourceLabel">数据来源:</td> <td id="dataSourceDiv"> <select class="form-control input-sm" id="datasourceViewId" name="dataSourceView.dataSourceId" > </select> </td> </tr> <tr> <td id="channelLabel">渠道:</td> <td id="channelDiv"> <select class="form-control input-sm" id="channelId" name="channelView.channelId" > </select> </td> </tr> <tr> <td id="businessLabel">业务:</td> <td id="businessDiv"> <select class="form-control input-sm" id="businessId" name="businessView.businessId" > </select> </td> </tr> <tr> <td id="KPILabel">指标:</td> <td id="KPIDiv"> <select class="form-control input-sm" id="KPIViewId" name="dimKpiView.kpiId" > </select> </td> </tr> </c:if > <tr> <td>任务组:</td> <td> <select class="form-control input-sm" id="taskGroup" name="taskGroup.taskgroupId"> <c:forEach items="${taskGroupList}" var="taskGroup"> <option value="${taskGroup.taskgroupId}" <c:if test="${taskGroup.taskgroupId == runTask.taskGroup.taskgroupId}">selected</c:if> > ${taskGroup.name} </option> </c:forEach> </select> </td> </tr> <tr> <td>任务优先级:</td> <td> <select class="form-control input-sm" id="taskPriority" name="taskPriority"> <option value="1" <c:if test="${runTask.taskPriority == '1'}">selected</c:if> >1</option> <option value="2" <c:if test="${runTask.taskPriority == '2'}">selected</c:if> >2</option> <option value="3" <c:if test="${runTask.taskPriority == '3'}">selected</c:if> >3</option> <option value="4" <c:if test="${runTask.taskPriority == '4'}">selected</c:if> >4</option> <option value="5" <c:if test="${runTask.taskPriority == '5'}">selected</c:if> >5</option> <option value="6" <c:if test="${runTask.taskPriority == '6'}">selected</c:if> >6</option> <option value="7" <c:if test="${runTask.taskPriority == '7'}">selected</c:if> >7</option> <option value="8" <c:if test="${runTask.taskPriority == '8'}">selected</c:if> >8</option> <option value="9" <c:if test="${runTask.taskPriority == '9'}">selected</c:if> >9</option> <option value="10" <c:if test="${runTask.taskPriority == '10'}">selected</c:if> >10</option> </select> </td> </tr> <tr> <td>任务类型:</td> <td> <select class="form-control input-sm" id="taskType" name="taskType.tasktypeId" onchange="changeTaskType();"> <c:if test="${runTask.defaultTaskType == 1 }"> <c:forEach items="${taskTypeList}" var="taskType"> <c:if test="${taskType.tasktypeId == '1' }"> <option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> > ${taskType.name} </option> </c:if> </c:forEach> </c:if> <c:if test="${runTask.defaultTaskType == 3 }"> <c:forEach items="${taskTypeList}" var="taskType"> <c:if test="${taskType.tasktypeId == '3' }"> <option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> > ${taskType.name} </option> </c:if> </c:forEach> </c:if> <c:if test="${runTask.defaultTaskType != 1 && runTask.defaultTaskType != 3 }"> <c:forEach items="${taskTypeList}" var="taskType"> <c:if test="${taskType.tasktypeId != '1' && taskType.tasktypeId != '3'}"> <option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> > ${taskType.name} </option> </c:if> </c:forEach> </c:if> </select> </td> </tr> <tr> <td id="modelLabel">关联模型:</td> <td id="modelDiv"> <select class="form-control input-sm" id="modelId" name="dataModelView.dataModelId"> </select> </td> </tr> <tr id="detailRow"> <td id="detailLabel">数据维护任务信息:</td> <td id="detailDiv"> <select class="form-control input-sm" id="detailSelect" name="taskDetail.taskInfoId"> </select> </td> </tr> <tr> <td>下次运行时间(<font color="red">必填</font>):</td> <td> <input type="input" class="form-control input-sm Wdate" id="taskNextrunTime" name="taskNextrunTimeStr" value="${runTask.taskNextrunTime}" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',readOnly:false,minDate:'%y-%M-%d'})"> </td> </tr> <c:if test="${runTask.defaultTaskType != 3 }"> <tr id="frequencyRow"> <td valign="top">运行频率:</td> <td> <%-- <input type="input" class="form-control input-sm " id="frequency" name="frequency" value="${runTask.frequency}" maxlength="100"> --%> <select class="form-control input-sm" id="frequencyType" name="frequencyType" onchange="changeFrequencyType()"> <option value="1" <c:if test="${runTask.frequencyType == '1' }">selected</c:if> >分钟</option> <option value="2" <c:if test="${runTask.frequencyType == '2' }">selected</c:if> >小时</option> <option value="3" <c:if test="${runTask.frequencyType == '3' }">selected</c:if> >日</option> <option value="4" <c:if test="${runTask.frequencyType == '4' }">selected</c:if> >月</option> </select> <select class="form-control input-sm" id="frequencyValue" name="frequencyValue"> </select> <input type="hidden" id="frequencyValueHidden" value="${runTask.frequencyValue }"> </td> </tr> </c:if> <c:if test="${runTask.defaultTaskType == 1 || runTask.defaultTaskType == 5}"> <tr> <td>模型参数:</td> <td> <div style="width:420px;height: 130px;overflow: auto"> <table class="table table-hover table-striped" id="displayParam" > <thead> <tr><th>参数名</th><th>参数值</th><th>参数类型</th></tr> </thead> <tbody id="addTr"> </tbody> </table> </div> </td> </tr> </c:if> <tr> <td>任务内容:</td> <td> <c:if test="${runTask.defaultTaskType == 1 }"> <textarea class="form-control input-sm" rows="6" maxlength="666" disabled>r_model_task_agent.pl</textarea> <input type="hidden" name="taskContext" value="r_model_task_agent.pl"> </c:if> <c:if test="${runTask.defaultTaskType != 1 }"> <textarea class="form-control input-sm" rows="6" id="taskContextArea" maxlength="666">${runTask.taskContext}</textarea> <input type="hidden" name="taskContext" id="taskContext" value="{runTask.taskContext}"> </c:if> </td> </tr> <c:if test="${runTask.defaultTaskType != 3 }"> <tr id="taskMaxTimesRow"> <td>最大运行次数:</td> <td> <input type="input" class="form-control input-sm" id="taskMaxTimes" name="taskMaxTimes" value="${runTask.taskMaxTimes}" maxlength="10"> </td> </tr> </c:if> <tr> <td></td> <td> <button type="button" id="modelSubmit" class="btn btn-primary" onclick="saveForm('taskId');">确定</button> <!-- <button type="reset" class="btn btn-default" id="modelReset">清空</button> --> <c:if test="${useType =='new'}"> <button type="reset" class="btn btn-warning" id="modelBack" onclick="abandonTask()">返回</button> </c:if> <c:if test="${useType =='modify'}"> <button type="reset" class="btn btn-warning" id="modelBack" onclick="window.location.href='${ctx}/BaseManage/TaskManage/taskListFrame?defaultTaskType=${runTask.defaultTaskType}'">返回</button> </c:if> </td> </tr> </table> </form> </div> </div> </div> </div> </div> </div> </div> </div> </body> </html>