325 lines
12 KiB
Plaintext
325 lines
12 KiB
Plaintext
<%@ page contentType="text/html; charset=GBK"%>
|
||
<%@page import="com.tenwa.reckon.util.UUIDUtil"%>
|
||
<%@ include file="/Frame/resources/include/include_begin_info.jspf"%>
|
||
<script type="text/javascript" src="<%=sWebRootPath%>/Frame/resources/js/base64.min.js"> </script>
|
||
<%
|
||
/*
|
||
Author: undefined 2017-08-17
|
||
Content: 示例详情页面
|
||
History Log:
|
||
*/
|
||
String id = CurPage.getParameter("id");
|
||
String type = CurPage.getParameter("type");
|
||
|
||
String sTempletNo = "MsgTempletInfo";//--模板号--
|
||
ASObjectModel doTemp = new ASObjectModel(sTempletNo);
|
||
doTemp.setHtmlEvent("MSG_SEND_TIME", "onblur", "dateObjClose");
|
||
ASObjectWindow dwTemp = new ASObjectWindow(CurPage, doTemp,request);
|
||
dwTemp.Style = "2";//freeform
|
||
//dwTemp.ReadOnly = "-2";//只读模式
|
||
dwTemp.genHTMLObjectWindow(id);
|
||
|
||
String sButtons[][] = {
|
||
{"true","All","Button","保存","保存所有修改","save()","","","","btn_icon_save"},
|
||
{"true","All","Button","返回","返回","AsDialog.ClosePage()","","","","btn_icon_back"}
|
||
};
|
||
sButtonPosition = "south";
|
||
%><%@ include file="/Frame/resources/include/ui/include_info.jspf"%>
|
||
<script type="text/javascript">
|
||
var oldValue = getItemValue(0,0,"msg_type");
|
||
var mousestatus;
|
||
changeMsgTimeType();
|
||
checkMsg();
|
||
|
||
function changeMsgTimeType(){
|
||
var value = getItemValue(0,0,"msg_time_type");
|
||
switch(value){
|
||
case "msg_time_type01":
|
||
setItemDisabled(0,0,"delay_day",true);
|
||
setItemDisabled(0,0,"msg_send_time",true);
|
||
setItemRequired(0,"delay_day",false);
|
||
setItemRequired(0,"msg_send_time",false);
|
||
$("#MSG_SEND_TIME").next().hide();
|
||
break;
|
||
case "msg_time_type02":
|
||
setItemDisabled(0,0,"delay_day",true);
|
||
setItemDisabled(0,0,"msg_send_time",false);
|
||
setItemRequired(0,"delay_day",false);
|
||
setItemRequired(0,"msg_send_time",true);
|
||
$("#MSG_SEND_TIME").next().show();
|
||
break;
|
||
case "msg_time_type03":
|
||
setItemDisabled(0,0,"delay_day",true);
|
||
setItemDisabled(0,0,"msg_send_time",false);
|
||
setItemRequired(0,"delay_day",false);
|
||
setItemRequired(0,"msg_send_time",true);
|
||
$("#MSG_SEND_TIME").next().show();
|
||
break;
|
||
case "msg_time_type04":
|
||
setItemDisabled(0,0,"delay_day",true);
|
||
setItemDisabled(0,0,"msg_send_time",false);
|
||
setItemRequired(0,"delay_day",false);
|
||
setItemRequired(0,"msg_send_time",true);
|
||
$("#MSG_SEND_TIME").next().show();
|
||
break;
|
||
case "msg_time_type05":
|
||
setItemDisabled(0,0,"delay_day",false);
|
||
setItemDisabled(0,0,"msg_send_time",false);
|
||
setItemRequired(0,"delay_day",true);
|
||
setItemRequired(0,"msg_send_time",true);
|
||
$("#MSG_SEND_TIME").next().show();
|
||
break;
|
||
}
|
||
}
|
||
|
||
function createCronExpression(){
|
||
var msgtype = getItemValue(0,0,"MSG_TYPE");
|
||
if(msgtype.indexOf("holiday") != -1 || msgtype.indexOf("birthday") != -1){
|
||
return;
|
||
}
|
||
var cronExpression = this.getItemValue(0,getRow(0),"CRON_EXPRESSION");
|
||
var sParam = "cronExpression="+cronExpression;
|
||
AsDialog.PopView("/Tenwa/Core/quartz/QuartzCronManager.jsp",sParam,"resizable=yes;dialogWidth=600px;dialogHeight=350px;center:yes;status:no;statusbar:no",function(e){
|
||
setItemValue(0,getRow(),"CRON_EXPRESSION",e);
|
||
},"Cron表达式");
|
||
}
|
||
|
||
function checkMsgType(){
|
||
var id = getItemValue(0,0,"id");
|
||
var msgType = getItemValue(0,0,"msg_type");
|
||
var sResult = RunJavaMethodTrans("com.tenwa.message.QuartzMessageManager","checkMsgType","id="+id+",msgType="+msgType+",type=<%=type%>");
|
||
if("FAILED" == sResult){
|
||
setItemValue(0,0,"msg_type",oldValue?oldValue:"");
|
||
alert("此短信类型已存在!");
|
||
return;
|
||
}
|
||
checkMsg();
|
||
}
|
||
|
||
function selectSendRelativeCol(){
|
||
var param = getItemValue(0,0,"MSG_SQL_PARAM");
|
||
if(param){
|
||
param = "checkValue=" + param.replace(/,/ig,"@");
|
||
}
|
||
AsDialog.OpenSelector("SelectSendRelativeCol",param,"dialogWidth=" + parseInt(window.screen.width * 0.4) + "px dialogHeight=" + parseInt(window.screen.height * 0.3) + "px",function(sReturn){
|
||
if(!sReturn||sReturn=="_CANCEL_"){
|
||
return;
|
||
}
|
||
sReturn = sReturn.split("~");
|
||
var val = "";
|
||
for(var i=0;i<sReturn.length;i++){
|
||
if(sReturn[i]){
|
||
val += "," + sReturn[i].split("@")[0];
|
||
}
|
||
}
|
||
val = val.substring(1);
|
||
setItemValue(0,0,"MSG_SQL_PARAM",val);
|
||
},"请选择发送关联字段");
|
||
}
|
||
|
||
function getTime(){
|
||
//AsDialog.OpenCalender("MSG_SEND_TIME", 'hh:mm:ss','',new Date());
|
||
var dateObj = document.getElementById("dateObj");
|
||
document.getElementById("MSG_SEND_TIME").focus();
|
||
if(dateObj){
|
||
$(dateObj).hide();
|
||
$(dateObj).show();
|
||
return;
|
||
}
|
||
var msgSendTime = getItemValue(0,0,"MSG_SEND_TIME");
|
||
var hh = 0;
|
||
var mm = 0;
|
||
var ss = 0;
|
||
if(msgSendTime){
|
||
hh = msgSendTime.split(":")[0];
|
||
mm = msgSendTime.split(":")[1];
|
||
ss = msgSendTime.split(":")[2];
|
||
}
|
||
var hour = "";
|
||
var minute = "";
|
||
var second = "";
|
||
for(var i=0;i<24;i++){
|
||
var n = (i+"").length == 1?"0"+i:i;
|
||
if(hh == n){
|
||
hour += "<option selected>"+n+"</option>";
|
||
}else{
|
||
hour += "<option>"+n+"</option>";
|
||
}
|
||
}
|
||
for(var i=0;i<60;i++){
|
||
var n = (i+"").length == 1?"0"+i:i;
|
||
if(mm == n){
|
||
minute += "<option selected>"+n+"</option>";
|
||
}else{
|
||
minute += "<option>"+n+"</option>";
|
||
}
|
||
|
||
if(ss == n){
|
||
second += "<option selected>"+n+"</option>";
|
||
}else{
|
||
second += "<option>"+n+"</option>";
|
||
}
|
||
}
|
||
var e = event || window.event;
|
||
var left = e.clientX - 190;
|
||
var right = e.clientY + 11;
|
||
var dateObject = $("<div id='dateObj' onmouseover='setMousein()' onmouseout='setMouseout()' style='border:1px solid gray;background-color:white;font-size:13px;width:200px;height:50px;position:absolute;left:"+left+";top:"+right+";'> <select id='hour' style='width:50px' onchange='setFocus()'>"+hour+"</select>时<select id='minute' style='width:50px' onchange='setFocus()'>"+minute+"</select>分<select id='second' style='width:50px' onchange='setFocus()'>"+second+"</select>秒</br> <input type='button' id='dateSelect' style='position:relative;top:7px;width:40px;height:20px;font-size:6px' onclick='selectDate()' value='确定'/> <input type='button' id='dateClose' style='position:relative;top:7px;width:40px;height:20px;font-size:6px' onclick='dateObjClose(\"close\");' value='关闭'/></div>");
|
||
$(document.body).append(dateObject);
|
||
}
|
||
|
||
function checkData(){
|
||
var msgcontent = getItemValue(0,0,"MSG_CONTENT");
|
||
var msgsql = getItemValue(0,0,"MSG_SQL");
|
||
var msgsqlparam = getItemValue(0,0,"MSG_SQL_PARAM");
|
||
var msgtype = getItemValue(0,0,"MSG_TYPE");
|
||
var isrepeatbydate = getItemValue(0,0,"IS_REPEAT_BYDATE");
|
||
var params = [];
|
||
var num = msgcontent.length-msgcontent.replace(/}/g,"").length;
|
||
if(num > 0)
|
||
var index = 0;
|
||
for(var p=0;p<num;p++){
|
||
var start = msgcontent.indexOf("{", index);
|
||
var end = msgcontent.indexOf("}", index);
|
||
params.push(msgcontent.substring(start+1, end));
|
||
index = end+1;
|
||
}
|
||
var sqlparam = msgsqlparam.split(",");
|
||
if(sqlparam.length > 0){
|
||
for(var s=0;s<sqlparam.length;s++){
|
||
params.push(sqlparam[s]);
|
||
}
|
||
}
|
||
var ale = "SQL语句中缺少必须的返回字段:";
|
||
var fl = false;
|
||
var sq;
|
||
msgsql = msgsql.toLowerCase();
|
||
if(msgsql.substring(0,"select".length) == "select" && msgsql.indexOf("from") != -1){
|
||
sq = msgsql.substring(msgsql.indexOf("select")+6,msgsql.indexOf("from"));
|
||
}else{
|
||
alert("SQL语法有问题!");
|
||
return false;
|
||
}
|
||
sq = sq.split(",");
|
||
for(var p=0;p<sq.length;p++){
|
||
sq[p] = sq[p].indexOf(".") != -1?sq[p].split(".")[1]:sq[p];
|
||
if(sq[p].trim().indexOf("as") != -1){
|
||
sq[p] = sq[p].indexOf("as") != -1?sq[p].split("as")[1]:sq[p];
|
||
sq[p] = sq[p].replace(/\s/ig,"");
|
||
continue;
|
||
}
|
||
if(sq[p].trim().indexOf(" ") != -1){
|
||
sq[p] = sq[p].indexOf(" ") != -1?sq[p].split(" ")[1]:sq[p];
|
||
sq[p] = sq[p].replace(/\s/ig,"");
|
||
}
|
||
}
|
||
for(var i=0;i<params.length;i++){
|
||
if("subjecturl"!=params[i] && sq.indexOf(params[i].toLowerCase()) == -1){
|
||
ale += params[i]+",";
|
||
fl = true;
|
||
}
|
||
}
|
||
if(fl){
|
||
alert(ale.substring(0,ale.length-1)+"!");
|
||
return false;
|
||
}
|
||
/* var reg = /^\d{1,2}:\d{1,2}:\d{1,2}$/;
|
||
if(!data.msgsendtime.match(reg)){
|
||
mini.alert("短信发送时间格式错误,请参照00:00:00或0:0:0!");
|
||
return false;
|
||
} */
|
||
if(isrepeatbydate=='yes'){
|
||
if(sq.indexOf("checkdate") == -1 ){
|
||
alert("通过日期判断重复发送的短信SQL中必须返回checkdate!");
|
||
return false;
|
||
}
|
||
}
|
||
/* if(msgsqlparam.toLowerCase().indexOf("phonenumber")==-1){
|
||
alert("SQL关联关键字必须含有phonenumber!");
|
||
return false;
|
||
} */
|
||
if(msgsqlparam.toLowerCase().indexOf("customer_id")==-1){
|
||
alert("SQL关联关键字必须含有customer_id!");
|
||
return false;
|
||
}
|
||
if(msgtype.indexOf("holiday") != -1 || msgtype.indexOf("birthday") != -1){
|
||
return true;
|
||
}
|
||
if(msgsql.toLowerCase().indexOf("proj_manage")==-1 && msgsql.toLowerCase().indexOf("proj_manager")!=-1){
|
||
alert("项目短信:SQL必须返回proj_manage信息!");
|
||
return false;
|
||
}
|
||
if(msgsql.toLowerCase().indexOf("contract_id")==-1){
|
||
alert("项目短信:SQL必须返回contract_id信息!");
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
function checkMsg(){
|
||
var msgtype = getItemValue(0,0,"MSG_TYPE");
|
||
if(msgtype.indexOf("holiday") != -1 || msgtype.indexOf("birthday") != -1){
|
||
setItemDisabled(0,0,"CRON_EXPRESSION",true);
|
||
setItemRequired(0,"CRON_EXPRESSION",false);
|
||
}else{
|
||
setItemDisabled(0,0,"CRON_EXPRESSION",false);
|
||
setItemRequired(0,"CRON_EXPRESSION",true);
|
||
}
|
||
}
|
||
|
||
function save(){
|
||
if(!iV_all("myiframe0"))return;
|
||
if(!checkData()){
|
||
return;
|
||
}
|
||
setItemValue(0,0, "MSG_SQL", "ABCDEFG" + Base64.encode(getItemValue(0,0,"MSG_SQL")));
|
||
as_save(0,'createJobAndTrigger()');
|
||
}
|
||
|
||
function createJobAndTrigger(){
|
||
var id = getItemValue(0,0,"ID");
|
||
var msgType = getItemValue(0,0,"MSG_TYPE");
|
||
var jobName = getItemValue(0,0,"JOBNAME");
|
||
var triggerName = getItemValue(0,0,"TRIGGERNAME");
|
||
var msgtypename = getObjs(0,"MSG_TYPE")[0][(getObjs(0,"MSG_TYPE")[0].selectedIndex)].text;
|
||
var msgSql = "";//getItemValue(0,0,"MSG_SQL").replace(/,/ig,"△").replace(/=/ig,"&").replace(/[ ]/ig,"@@@");
|
||
var triggermode = getItemValue(0,0,"TRIGGER_MODE");
|
||
var msgcontent = getItemValue(0,0,"MSG_CONTENT");
|
||
var msgsqlparam = getItemValue(0,0,"MSG_SQL_PARAM").replace(/,/ig,"&");
|
||
var msgsendtype = getItemValue(0,0,"MSG_TIME_TYPE");
|
||
var msgsendtime = getItemValue(0,0,"MSG_SEND_TIME");
|
||
var delayday = getItemValue(0,0,"DELAY_DAY");
|
||
var durabledays = getItemValue(0,0,"DURABLEDAYS");
|
||
var isrepeatbydate = getItemValue(0,0,"IS_REPEAT_BYDATE");
|
||
var cronExpression = getItemValue(0,0,"CRON_EXPRESSION");
|
||
var triggerState = getItemValue(0,0,"MSG_STATUS");
|
||
var isoverdateexecute = getItemValue(0,0,"IS_OVERDATE_EXECUTE");
|
||
var params = "msgType="+msgType+",jobName="+jobName+",triggerName="+triggerName+",msgtypename="+msgtypename+",msgSql="+msgSql+",id="+id
|
||
+",triggermode="+triggermode+",msgcontent="+msgcontent+",msgsqlparam="+msgsqlparam+",msgsendtype="+msgsendtype+",isoverdateexecute="+isoverdateexecute
|
||
+",msgsendtime="+msgsendtime+",delayday="+delayday+",isrepeatbydate="+isrepeatbydate+",durabledays="+durabledays+",triggerState="+triggerState+",cronExpression="+cronExpression+",userID=<%=CurUser.getUserID()%>";
|
||
var sResult = RunJavaMethodTrans("com.tenwa.message.QuartzMessageManager","saveOrUpdateJobAndTrigger",params);
|
||
}
|
||
|
||
function setMousein(){
|
||
mousestatus = false;
|
||
}
|
||
|
||
function setMouseout(){
|
||
mousestatus = true;
|
||
}
|
||
|
||
function dateObjClose(obj){
|
||
if(mousestatus || obj == "close"){
|
||
$("#dateObj").hide();
|
||
}
|
||
}
|
||
|
||
function setFocus(){
|
||
document.getElementById("MSG_SEND_TIME").focus();
|
||
}
|
||
|
||
function selectDate(){
|
||
setItemValue(0,0,"MSG_SEND_TIME",$("#hour").val()+":"+$("#minute").val()+":"+$("#second").val());
|
||
$("#dateObj").hide();
|
||
}
|
||
</script>
|
||
<%@ include file="/Frame/resources/include/include_end.jspf"%> |